MySQL添加访问权限
场景
系统:CentOS 7
服务器在(非正常)重启后,出现MySQL数据库无法访问错误
1 | ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) |
解决思路
此处没有去排查具体出错原因,尝试的修复方式是重置root密码并添加本地、远端访问权限。
Note:
出现问题后还是应该确认问题的根本原因的,MySQL官方文档中也列举了Access denied
的原因,文末有相关链接
重置MySQL Root密码
- 编辑
/etc/my.cnf
文件,在文件最后添加如下内容,用于跳过MySQL登录检查
1 | [mysqld] |
- 重启MySQL服务
1 | sudo systemctl restart mysqld |
- 进入MySQL并重置密码
使用mysql –uroot –p
命令并直接回车,进行MySQL,重置密码并刷新
1 | set password for 'root'@'localhost'=password('YourPassword'); |
添加访问权限
添加本地、远程访问权限并刷新
1 | grant all privileges on *.* to 'root'@'localhost'; |
将/etc/my.cnf
文件中之前的修改注册掉,并重启MySQL服务
访问测试
本地访问
1 | mysql -u root -p |
远程访问
1 | mysql -u {username} -p'{password}' \ |
密码设置中的问题
密码设置时,可能会提示如下错误,可以通过调整密码配置或者输入符合要求的密码
1 | ERROR 1819 (HY000): Your password does not satisfy the current policy requirements |
调整密码配置项
进入数据库后,用下述命令查询密码相关的配置参数
1 | SHOW VARIABLES LIKE 'validate_password%'; |
得到类似如下的参数名及其值的列表
1 | +--------------------------------------+-------+ |
通过set global NAME=VALUE
形式的命令调整相应值即可,例如:
1 | set validate_password.policy=LOW |
Reference
MySQL Docs - Access denied
MySQL Docs - Troubleshooting Problems Connecting to MySQL
Your password does not satisfy the current policy requirements
Access mysql remote database from command line