MySQL 5.7 重置root默认密码
1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1
这一行配置让 mysqld 启动时不对密码进行验证
2、重启 mysqld 服务:systemctl restart mysqld
3、使用 root 用户登录到 mysql:mysql -u root 回车
4、切换到mysql数据库,更新 user 表:
update user set authentication_string = password('xxxx'), password_expired = 'N', password_last_changed = now() where user = 'root';
ps:
在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string
5、退出 mysql,编辑 /etc/my.cnf 文件,删除 skip-grant-tables=1 的内容
6、重启 mysqld 服务,再用新密码登录即可
systemctl restart mysqld
mysql -uroot -pxxxx
ps:
MySQL 5.7 在初始安装后(CentOS7 操作系统)会生成随机初始密码,并在
/var/log/mysqld.log中有记录,可以通过 cat 命令查看,找 password 关键字
cat /var/log/mysqld.log | grep password
找到密码后,在本机以初始密码登录,通过
alter user 'root'@'localhost' identified by 'xxxx'
命令,修改 root 用户的密码为 root,然后退出,重新以root用户和刚设置的密码进行登录即可。
mysql创建用户并授权,解决1045问题
创建用户
create user '用户'@'地址(%表示不限ip)' identified by '密码';
例;create user 'zzz'@'%' identified by '123';
报错:1819 - Your password does not satisfy the current policy requirements
说我的秘密不符合当前的策略要求
查看当前密码策略:SHOW VARIABLES LIKE 'validate_password%';
两个选择:修改策略或修改密码来符合策略。
赋权
grant 权限1,权限2...权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接密码’ with grant option;
ps:
with grant option允许用户将自己的权限授予其他用户
数据库类似 *my-test* 中间有横线的,需要加 ``符号
当我授权时报错 1045 - Access denied for user ‘root’@’%’ (using password: YES)
这个错误一般出现在连接数据库时密码错误。此处报错的原因:因为我使用的Navicat远程连接的数据库,默认只有root用户localhost连接才有授权能力,其他IP赋权默认不允许的,可能为了安全性考虑。
select user,host,grant_priv from user;
+---------------+-----------+------------+
| user | host | grant_priv |
+---------------+-----------+------------+
| root | localhost | Y |
| mysql.session | localhost | N |
| mysql.sys | localhost | N |
| root | % | N |//我使用的root远程登录没有授权权限
| zzz | % | N |
|
+---------------+-----------+------------+
修改root用户%连接的grant_priv为Y
UPDATE user set Grant_priv='Y' where user='root' and `Host`='%'
exit
修改后重新连接,授权成功后刷新
flush privileges;