1. 初始化提示权限,找不到临时密码
ERROR 1045 (28000): Access denied for user 'root'@'localhost'
1. yum安装初始化设置密码失败,提示权限问题。
2. 离线安装启动后 /var/log/mysqld.log 文件为空,无法获取密码。
这里出现的问题,无法初始化,没有临时密码,而Centos7以后又不允许空密码登陆。
解决办法
停止服务
systemctl stop mysqld.service
设置登录环境,跳过权限(5.7比较新的版本user表中password列更改为authentication_string)
systemctl set-environment MYSQLD_OPTS="--user=mysql --skip-grant-tables --skip-networking"
启动服务
systemctl start mysqld.service
root用户登录,注意后面是mysql
mysql -u root mysql
设置密码
UPDATE mysql.user SET authentication_string=PASSWORD("123456") WHERE user='root' and host='localhost';
刷新退出
flush privileges;
quit;
恢复设置
systemctl unset-environment MYSQLD_OPTS;
重启服务
systemctl restart mysqld.service;
2. 密码设置策略问题
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决办法
1. 修改策略
查看策略
show variables like 'validate_password%';
show variables like "%password%";
设置密码强度低
set global validate_password_policy=0;
设置密码长度,默认最少4位
set global validate_password_length=4;
再修改密码
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
set password for 'root'@'localhost'=password('123456');
alter user 'root'@'localhost' identified by '123456';
2. 关闭密码策略
关闭服务
systemctl stop mysqld.service
vim /etc/my.cnf
#在[mysqld]下面
[mysqld]
validate_password=off
systemctl start mysqld.service
完成查看下状态
systemctl status mysqld
登录mysql看到最下面validate_password状态disabled
show plugins;
修改密码OK
alter user 'root'@'localhost' identified by '123456';
3. 如果需要设置密码不过期
alter user 'root'@'localhost' password expire never;
或者
systemctl stop mysqld
vim /etc/my.cnf
[mysqld]
default_password_lifetime=0
systemctl start mysqld
完成查看下状态
systemctl status mysqld
4. 如果出现修改my.cnf文件后服务无法启动
查看信息
systemctl status mysqld
一般会有具体信息,比如修改的设置无法识别问题等
vim /etc/my.cnf
查看是否位置出错,调整位置,或者注释再启动mysqld
3. 赋权后还是提示权限问题
grant all privileges on *.* to root@'%' identified by '123456' with grant option;
已经执行上面的sql赋权后,CM无法初始化数据库、Navicat无法访问等等
解决办法
1. 检查是否是在mysql库下赋权
2. 查看:MySQL拒绝访问问题