
必须使用flush privileges的两种情况
1、改密码。
2、授权超用户。
flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。
MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。
通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。
扩展资料:
mysql 修改密码后,注意flush privileges。
mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效。
具体例子:
1、用户root用户进入mysql再打开mysql数据库(use mysql)后。
create user stu identified by ‘stu’ ##创建一用户stu并添加密码为stu。
exit ##退出测试。
2、用新用户重新进入mysql。
mysql -ustu -pstu ##进入成功。
3、重新使用root用户进入mysql并打开mysql数据库。
update user set password=password (‘123456’) where user='stu' ##更改stu用户密码为123456。
exit ##再次退出测试。
4、直接以用户stu身份进入,用新密码进入看是否成功。
mysql -ustu -p123456 ##报错,密码不正确。
5、重新以root 用户登陆并进入mysql数据库,重新修改用户密码。
update user set password=password (‘123456’) where user='123456' ##更改stu用户密码为123456
flush privileges ##刷新MySQL的系统权限相关表。
exit
6.再次退出,并以stu用户123456密码进入,测试成功。
使用mysql -uroot -p,然后输入密码登录mysql时,出现了如下错误:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
一般这个错误是由密码错误引起,解决的办法自然就是重置密码
解决方案如下:
mysqld --skip-grant-tables &
此时又报了一个错误:2018-02-01T02:52:55.093724Z 0 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
执行命令: mysqld --user=root --skip-grant-tables &
3.登录mysql:mysql -uroot或mysql
4.更新root密码
mysql5.7以下版本:UPDATE mysql.user SET Password=PASSWORD('123456') where USER='root'
mysql5.7版本:UPDATE mysql.user SET authentication_string=PASSWORD('123456') where USER='root'
5.刷新权限:flush privileges
6.退出mysql:exit或quit
7.使用root用户重新登录mysql
mysql -uroot -p
Enter password:<输入新设的密码123456>
原文地址
mysql为了提高其性能,部分数据时缓存在内存中,因此要刷新表(清除缓存),就需要使用
FLUSH TABLES当然,如果是需要备份数据库,同时防止备份时候有新数据写入,且备份的是最新的:
FLUSH TABLES WITH READ LOCK具体你可以查询官方文档,其用处并不是很大,相反刷新权限我们时常用。但是,对于并发现很高、缓存很大的数据库,在备份时候都需要加上锁并刷新。
当然,高可用的系统,都是做了主从复制+热备。备份直接让从数据库做备份功能了。另外磁盘镜像也是一个好的备份方案。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)