一、配置免密登陆
找到 MySQL 的配置文件 my.cnf
,该文件一般位于 /etc/my.cnf
。如果不是在 /etc 目录下,可以使用 find / -name my.cnf
进行查找。找到该文件之后,在该文件的最后新加入一行,内容为 skip-grant-tables
, 然后保存退出。示例配置文件参考如下:
[mysqld]
datadir=/usr/local/mysql/data
port=3306
max_connections=600
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
innodb_file_per_table=1
symbolic-links=0
log-error=/usr/local/mysql/data/error.log
skip-grant-tables
二、重启 MySQL 服务
修改完上述配置文件之后,请重启 MySQL 服务使修改的配置文件生效。 具体命令如下:
systemctl restart mysql
# 或者
systemctl stop mysql
systemctl start mysql
# 或者
service mysql restart
# 或者
service mysql stop
service mysql start
三、将旧密码设置为空
具体操作请参考如下命令:
# 1、执行如下命令登录数据库,提示输入密码时直接敲回车
mysql -u root -p
# 2、选择数据库
use mysql
# 3、将密码置空,此处用的是 authentication_string 字段,详情请参考博客底部连接
update user set authentication_string = '' where user = 'root';
# 4、退出
quit
四、去除免密登录
在步骤三把密码设置为空之后,我们需要将步骤一中的 skip-grant-tables 配置删除, 然后重启 MySQL 服务即可。具体步骤如下:
# 1、vi /etc/my.cnf 配置文件,删除 skip-grant-tables 配置,然后保存退出
# 2、重启 MySQL 服务
systemctl restart mysql
五、重新设置密码
重启服务之后,我们需要连接数据库重新设置密码。重新设置密码并不难,具体参考如下命令即可。但是这里有一个很关键的地方,就是指定主机,我就被这个坑了一波。 请参考下图:
参考完上图之后,相信你登陆到 MySQL 就没啥问题了。我也不知道这种情况是啥原因导致的,我通过 cat /etc/hosts
文件发现,localhost 和 127.0.0.1 是能够关联上的。 目前就不去研究了,能用就行,哈哈。
连接上数据之后,修改 MySQL 的命令如下:
# 执行如下命令登录数据库,提示输入密码时直接敲回车
mysql -u root -p
# 执行如下命令修改 'root'@'127.0.0.1' 的密码,xxx 表示密码,请自己设置对应密码
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'xxx';
# 然后保存退出,使用刚刚设置的密码登录即可
参考连接:https://dev.mysql.com/doc/refman/8.0/en/set-password.html
参考连接:https://dev.mysql.com/doc/refman/8.0/en/set-password.html
参考连接:https://dev.mysql.com/doc/refman/8.0/en/set-password.html