1、删除不用的账户
(1) 查看当前已存在账户
mysql> select user,host,password from mysql.user; 或下面的命令
#mysql> select distinct concat('user: ''',user,'''@''',host,''';') as query from mysql.user;
+---------------------------------------+
| query |
+---------------------------------------+
| user: 'root'@'127.0.0.1'; | #不要删
| user: 'wenqiang'@'172.16.1.%'; |
| user: 'root'@'localhost'; | #不要删
| user: 'root'@'localhost.localdomain'; |
+---------------------------------------+
4 rows in set (0.00 sec)
mysql> drop user wenqiang@'172.16.1.%'; #删除不需要的用户
(2) 授权用户时尽量不要使用%(该符号表示用户可以从任何地方都可以登陆)
授权格式:grant 权限 on 数据库.* to 用户名@用户所在网段 identified by "密码";
#只允许root用户从10.0.0.10登陆mysql并授予全库访问权限,同时为root用户设置密码123456
mysql> grant all on *.* to root@'10.0.0.10' identified by '123456';
#这种情况是只授权,root用户可以使用空密码从本地登录
mysql> grant all on *.* to root@'localhost';
#这种情况是root用户可以从本地登录,同时设置密码abc123(root用户可以设置多套登录密码)
mysql> grant all on *.* to root@'localhost' identified by 'abc123';
3、如果不小心把’root’@‘localhost’; 的授权删掉,应该这样解决
(1)这样登陆上去,并增加一条localhost的权限 [root@localhost ~]# mysql -uroot -p -h 127.0.0.1 #通过127.0.0.1登录上去 mysql> grant all on *.* to root@'localhost' identified by 'abc123'; #在增加一条localhost的授权 mysql> flush privileges; 新增加的root用户可能没有最高权限,见第3.1
3.1、当root用户无法给普通用户授权的时候
(1)登录mysql
[root@localhost ~]# mysql -uroot -p -h localhost
mysql> grant all on *.* to root@'localhost' identified by '123456';
error 1045 (28000): access denied for user 'root'@'localhost' (using password: yes) #报错
(2)查看当前有哪些用户
mysql> select distinct concat('user: ''',user,'''@''',host,''';') as query from mysql.user;
+---------------------------------------+
| query |
+---------------------------------------+
| user: 'root'@'127.0.0.1'; | #使用 mysql -uroot -p -h127.0.0.1登录mysql授权没问题
| user: 'wenqiang'@'172.16.1.%'; |
| user: 'root'@'localhost'; | #我发现从localhost登录的root用户无法给普通用户授权
| user: 'root'@'localhost.localdomain'; |
+---------------------------------------+
4 rows in set (0.00 sec)
(3)查看该root用户的grant_priv选项是y还是n(n表示无权给普通用户授权)
mysql> select * from mysql.user where user='root' and host='localhost'\g;
*************************** 1. row ***************************
host: localhost
user: root
password: *6bb4837eb74329105ee4568dda7dc67ed2ca2ad9
select_priv: y
insert_priv: y
update_priv: y
delete_priv: y
create_priv: y
drop_priv: y
reload_priv: y
shutdown_priv: y
process_priv: y
file_priv: y
grant_priv: n #无授权权限
references_priv: y
index_priv: y
alter_priv: y
show_db_priv: y
super_priv: y
create_tmp_table_priv: y
lock_tables_priv: y
execute_priv: y
repl_slave_priv: y
repl_client_priv: y
create_view_priv: y
show_view_priv: y
create_routine_priv: y
alter_routine_priv: y
create_user_priv: y
event_priv: y
trigger_priv: y
create_tablespace_priv: y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string:
password_expired: n
1 row in set (0.00 sec)
error:
no query specified
(3)把grant_priv选项的n改为y就可以了
mysql> update mysql.user set grant_priv='y' where user='root' and host='localhost';
query ok, 1 row affected (0.00 sec)
rows matched: 1 changed: 1 warnings: 0
mysql> flush privileges;
query ok, 0 rows affected (0.00 sec)
(4)退出重新登录mysql,再次给普通用户授权(一定要先退出mysql)
mysql> grant all on *.* to root@'localhost' identified by '123456';
query ok, 0 rows affected (0.00 sec)到此这篇关于mysql删除无用用户的方法实现的文章就介绍到这了,更多相关mysql删除无用用户内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论