当前位置: 代码网 > it编程>数据库>Mysql > mysql删除无用用户的方法实现

mysql删除无用用户的方法实现

2025年03月18日 Mysql 我要评论
1、删除不用的账户(1) 查看当前已存在账户mysql> select user,host,password from mysql.user; 或下面的命令#mysql> select

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删除无用用户内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com