MySQL 初始配置修改

修改root用户密码

代码

# 修改密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('12345aA)');
# 使更新起作用,当然,你用 /etc/init.d/mysqld restart 重启也能做到更新
flush privileges;

注意点

报错:密码安全等级不够

很多时候我们在修改密码时,会有报错,说密码安全程度不够:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

翻译过来,是:

你的密码不满足当前的安全要求。

我们先看一下当前的安全要求都有哪些:

# 获得和密码设置时有效验证相关的变量
SHOW VARIABLES LIKE 'validate_password%'

显示的结果如下:


+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

我们依次介绍:

  • validate_password_dictionary_file:密码验证字典文件,emmm一般不会去动它
  • validate_password_length:密码总体最小长度
  • validate_password_mixed_case_count:密码的大小写字母数量,密码中的大写字母数量和小写字母数量都不能小于此值
  • validate_password_policy: 密码安全要求等级
  • validate_password_special_char_count:密码中特殊字符数量(什么括号,逗号之类的特殊符号)

比如说,上面显示的要求是密码至少为8位,其中至少有一个大写字母、一个小写字母、一个特殊符号

当然,上面的这些变量也是可以修改的,修改语句如下:

set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;

设置远程连接

查找问题

use mysql;
select host,user from user;

显示的host是localhost,表示只能从本机登陆。

修改命令如下:

# 设置远程可连接
use mysql;
# 从任意ip可以连接,如果设置为具体的ip,则只能从固定的ip进行连接
update user set host='%' where user="root"

最后,重启更新一下:

 /etc/init.d/mysqld restart

附录:Linux下命令行安装mysql的完整流程

使用apt-get安装

安装命令如下:

sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev

检测安装结果命令:

sudo netstat -tap | grep mysql

成功安装的话,结果如下:

1.png

登陆遇到的问题——无法使用mysql密码

登陆命令,因为默认使用的是UNIX auth_socket插件。,所以不用密码可以直接登陆:

mysql -u root 

在这种清况下,上面的设置密码是不管用的,我们可以输入下面的命令进行对比:

SELECT User, Host, plugin FROM mysql.user;

很容易发现区别【当然,你显示的可能和我不太一样,因为我改了不少,才发现的问题】:

2.png

很容易发现区别,在这种情况下,即使我们将host配置成%,也无法使用ip登陆【127.0.0.1也做不到】。

解决方案一:新建账户

新建账户及登陆

mysql 命令如下:

CREATE USER 'lpc_test'@'%' IDENTIFIED BY '12345aA)';

创建账户情况如下:

3.png

尝试登陆:

4.png

使用127.0.0.1和mysql密码登陆成功~

解决方案二:修改账户支持的组件

这个方案我们不推荐,只是告诉大家一个关于auth_socket的启用、弃用方法。

创建使用auth_socket验证的账户

CREATE USER 'learn'@'localhost' IDENTIFIED WITH auth_socket;
SELECT User, Host, plugin FROM mysql.user;

结果如下:

5.png

如果本地主机上具有登录名,可以直接链接。

将依赖auth_socket的用户转为依赖密码验证

ALTER USER 'learn'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345aA)';

此处不在赘述。

登陆遇到的问题——公网ip无法登陆

继续上面的问题:

6.png

使用公网ip无法连接,我们使用检测mysql是否安装成功的命令看看这个服务是怎么监听端口的:

netstat -nutlp|grep mysql

结果如下:

7.png

他监听的是127.0.0.1或者是localhost,绑定了本地回旋地址,这样他是无法接收到其他ip的请求的,应该改成0.0.0.0

修改方法为修改/etc/mysql/mysql.conf.d/mysqld.cnfbind-address

vim /etc/mysql/mysql.conf.d/mysqld.cnf

新加或者修改配置为:

bind-address=0.0.0.0

然后重启mysql服务

service mysql restart

检测服务监听情况:

8.png

尝试链接:

9.png
10.png

文献参考

安装mysql

https://blog.csdn.net/xiangwanpeng/article/details/54562362

解决认证组件问题

https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost

创建用户及授权

https://www.jianshu.com/p/d7b9c468f20d

auth_socket
https://blog.csdn.net/weixin_41918841/article/details/82997651

你可能感兴趣的:(MySQL 初始配置修改)