博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

关于 mysql5.7 中 创建一个用户 并为其 grant 权限 操作失败的问题

SQL:

-- 创建授权 canal 账号  具有 slave 权限
-- 查看密码策略状态
select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';
-- 查看密码策略
show variables like 'validate_password%';
-- 修改密码策略
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=0;
set global validate_password_special_char_count=0;
set global validate_password_length=4;
set global validate_password_policy=low;
-- 创建用户
create user canal identified by 'canal';  
-- 赋予权限
grant select, replication slave, replication client on *.*  to 'canal'@'%' identified by 'canal';
-- 此时报错:Access denied for user 'root'@'%' (using password: YES)
-- 其他尝试
grant all privileges on *.*  to 'canal'@'%' identified by 'canal';
grant all privileges on *.*  to 'canal'@'%' ;
-- 查询 root 权限
show grants for  'root'@'%' ;
-- all privileges 但是仍然失败,bsbdqj,查询 mysql.user 表
select user,host,Grant_priv from mysql.user;
-- 发现非本地 root 无权授权 定位问题
-- 本地 root 登录失败,重置密码
update mysql.user set authentication_string = password('root') where user='root' and host = 'localhost';
-- 仍然登录失败,刷新权限
flush privileges;
-- 登录成功
select * from mysql.user where user='root' and host='localhost' \G;
-- hys!
show grants for  'canal'@'%';
+-----------------------------------+
| Grants for canal@%                |
+-----------------------------------+
| GRANT USAGE ON *.* TO 'canal'@'%' |
+-----------------------------------+

grant all privileges on *.*  to 'canal'@'%' with grant option;
select * from mysql.user where user='canal' \G;
revoke super on *.* from canal@'%'; 
select * from mysql.user where user='canal' \G;
revoke all on *.* from 'canal'@'%' ;
select * from mysql.user where user='canal' \G;
revoke grant option on *.* from canal@'%'; 
drop user 'canal'@'%';
create user canal identified by 'canal';  
grant all privileges on *.*  to 'canal'@'%';
select * from mysql.user where user='canal' \G;
revoke all on *.* from 'canal'@'%' ;
-- revoke all privileges on *.* from 'canal'@'%' ;

-- drop 会权限表的内容,而 delete 后需要执行 flush privileges,否则下次 create 创建用户会报错。
delete from user where user='canal' and host='localhost';
flush privileges;
grant select, replication slave, replication client on *.*  to 'canal'@'%' identified by 'canal';
show warnings;
select authentication_string from mysql.user where user='canal';
+-------------------------------------------+
| authentication_string                     |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
update mysql.user set authentication_string = password('canal')  where user='canal';
+---------+------+-------------------------------------------------------------------+
| Level   | Code | Message                                                           |
+---------+------+-------------------------------------------------------------------+
| Warning | 1681 | 'PASSWORD' is deprecated and will be removed in a future release. |
+---------+------+-------------------------------------------------------------------+
alter user canal@'%' identified by 'canal'; 
set global validate_password_mixed_case_count=1;
set global validate_password_number_count=1;
set global validate_password_special_char_count=1;
set global validate_password_length=8;
set global validate_password_policy=medium

 

posted @ 2022-08-17 15:01  CHANG_09  阅读(494)  评论(0编辑  收藏  举报