mysql设置密码,修改密码

1,264 阅读2分钟

使用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;