使用sudo apt install mysql-server方法安装的MySQL服务,安装之后没有临时密码的日志,想着直接修改root密码,但是尝试了很多网上的方法,但是都无法生效,包括
使用mysqld-safe --skip-grant-tables启动服务,然后修改密码
使用mysql_secure_installation命令引导修改密码
最后终于找到一个正确修改root密码的方法,记录如下:
1. 输出安装时自动生成的debian.cnf文件内容
sudo cat /etc/mysql/debian.cnf
输出内容如下
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = iqhZ4BsjJvWsGXfy
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = iqhZ4BsjJvWsGXfy
socket = /var/run/mysqld/mysqld.sock
2. 使用文件中的user段的debian-sys-maint用户进行登录
$ mysql -udebian-sys-maint -p
Enter password: // 这里输入上面文件内的password段的值
3. 修改root用户的插件和密码
此处一定要记得改plugin的值为mysql_native_password
UPDATE mysql.user SET plugin="mysql_native_password", authentication_string=PASSWORD("password") WHERE user="root";
如果上一步骤中出现密码过于简单无法修改的情况,可以先将validate_password_policy的值设置为0或者LOW。
SET GLOBAL validate_password_policy=0;
4. 重启mysql就可以使用新设置的密码进行登录了
sudo service mysql restart
修改MySQL密码
进入MySQL命令行,输入以下命令
# 格式:
# set password for 'user'@'host' = password('new_password');
set password for 'root'@'%' = password('passord');
一个问题记录一下,MySQL版本8.0.19,使用上面命令设置密码出现语法错误,如下:
set password for 'user'@'host' = password('new_password'); (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password('new_password')' at line 1")
使用语法
SET PASSWORD FOR root@localhost = 'new_password';解决问题
可能会提示1819的错误,说明密码校验的安全等级和你输入的密码不匹配,依照如下设置:
set global validate_password_policy=0;