修改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
成功安装的话,结果如下:
登陆遇到的问题——无法使用mysql密码
登陆命令,因为默认使用的是UNIX auth_socket插件。,所以不用密码可以直接登陆:
mysql -u root
在这种清况下,上面的设置密码是不管用的,我们可以输入下面的命令进行对比:
SELECT User, Host, plugin FROM mysql.user;
很容易发现区别【当然,你显示的可能和我不太一样,因为我改了不少,才发现的问题】:
很容易发现区别,在这种情况下,即使我们将host配置成%
,也无法使用ip登陆【127.0.0.1也做不到】。
解决方案一:新建账户
新建账户及登陆
mysql 命令如下:
CREATE USER 'lpc_test'@'%' IDENTIFIED BY '12345aA)';
创建账户情况如下:
尝试登陆:
使用127.0.0.1和mysql密码登陆成功~
解决方案二:修改账户支持的组件
这个方案我们不推荐,只是告诉大家一个关于auth_socket
的启用、弃用方法。
创建使用auth_socket
验证的账户
CREATE USER 'learn'@'localhost' IDENTIFIED WITH auth_socket;
SELECT User, Host, plugin FROM mysql.user;
结果如下:
如果本地主机上具有登录名,可以直接链接。
将依赖auth_socket
的用户转为依赖密码验证
ALTER USER 'learn'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345aA)';
此处不在赘述。
登陆遇到的问题——公网ip无法登陆
继续上面的问题:
使用公网ip无法连接,我们使用检测mysql是否安装成功的命令看看这个服务是怎么监听端口的:
netstat -nutlp|grep mysql
结果如下:
他监听的是127.0.0.1
或者是localhost
,绑定了本地回旋地址,这样他是无法接收到其他ip的请求的,应该改成0.0.0.0
修改方法为修改/etc/mysql/mysql.conf.d/mysqld.cnf
的bind-address
vim /etc/mysql/mysql.conf.d/mysqld.cnf
新加或者修改配置为:
bind-address=0.0.0.0
然后重启mysql服务
service mysql restart
检测服务监听情况:
尝试链接:
文献参考
安装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