菜鸟笔记
提升您的技术认知

mysql用户权限(host,user,password)管理(mysql.user)-ag真人游戏

注:

mysql.user表中host为%的含义

  host列指定了允许用户登录所使用的ip,比如user=root host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。
  而%是个通配符,如果host=192.168.1.%,那么就表示只要是ip地址前缀为“192.168.1.”的客户端都可以连接。如果host=%,表示所有ip都有连接权限。、
  这也就是为什么在开启远程连接的时候,大部分人都直接把host改成%的缘故,为了省事。


1:新增用户:

注:mysql数据库下user表中,host和user为两个主键列(primary key),已经各版本下非空未设置默认字段。

登录后,切换db:

[sql]  view plain  copy

  1. mysql> use mysql;  
  2. reading table information for completion of table and column names  
  3. you can turn off this feature to get a quicker startup with -a  
  4.   
  5. database changed  

新增用户:

注:限制kaka用户的登陆ip为10.155.123.55,ip为随手写入,如果正确配置为您有效登陆ip,所有ip登陆,则设置host为 '%'

[sql]  view plain  copy

  1. mysql> insert into mysql.user(host,user,password) values("10.155.123.55","kaka",password("kaka123"));  

在版本 5.6.27:

[sql]  view plain  copy

  1. mysql> insert into mysql.user(host,user,password,ssl_cipher,x509_issuer,x509_subject) values("10.155.123.55","kaka",password("kaka123"),"","","");  
  2. query ok, 1 row affected (0.03 sec)  

新增用户(全sql):

[sql]  view plain  copy

  1. insert  into `user`(`host`,`user`,`password`,`select_priv`,`insert_priv`,`update_priv`,`delete_priv`,`create_priv`,`drop_priv`,`reload_priv`,`shutdown_priv`,`process_priv`,`file_priv`,`grant_priv`,`references_priv`,`index_priv`,`alter_priv`,`show_db_priv`,`super_priv`,`create_tmp_table_priv`,`lock_tables_priv`,`execute_priv`,`repl_slave_priv`,`repl_client_priv`,`create_view_priv`,`show_view_priv`,`create_routine_priv`,`alter_routine_priv`,`create_user_priv`,`event_priv`,`trigger_priv`,`create_tablespace_priv`,`ssl_type`,`ssl_cipher`,`x509_issuer`,`x509_subject`,`max_questions`,`max_updates`,`max_connections`,`max_user_connections`,`plugin`,`authentication_string`,`password_expired`) values ('%','root','*6bb4837eb74329105ee4568dda7dc67ed2ca2ad9','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','','','','',0,0,0,0,'mysql_native_password','','n');  

新增用户完成,刷新mysql的系统权限相关表

[sql]  view plain  copy

  1. mysql> flush privileges;  
  2. query ok, 0 rows affected (0.00 sec)  

设置遇到问题,请查看:mysql配置和设置问题小结

重启生效:

[sql]  view plain  copy

  1. [root@tony_ts_tian bin]# service mysqld restart  
  2. shutting down mysql.... success!   
  3. starting mysql. success!   

查询用户,host,user,password:

[sql]  view plain  copy

  1. mysql>  select host,user,password from mysql.user;    
  2. ---------------- ------ -------------------------------------------   
  3. | host           | user | password                                  |  
  4. ---------------- ------ -------------------------------------------   
  5. | localhost      | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  6. | tony\_ts\_tian | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  7. | 127.0.0.1      | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  8. | ::1            | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  9. | 10.155.123.55  | kaka | *90b3d884fb6092549f244125549b77c000a0f9c6 |  
  10. | %              | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  11. ---------------- ------ -------------------------------------------   
  12. 6 rows in set (0.00 sec)  

2:修改信息,密码,类似可修改其他字段。

[sql]  view plain  copy

  1. mysql> update `user` set password=password("123456") where host='10.155.123.55' and user='kaka';  
  2. query ok, 1 row affected (0.02 sec)  
  3. rows matched: 1  changed: 1  warnings: 0  
  4. mysql> flush privileges;  
  5. query ok, 0 rows affected (0.00 sec)  
  6. mysql> select host,user,password from `user`;  
  7. 前:  
  8. | 10.155.123.55  | kaka | *90b3d884fb6092549f244125549b77c000a0f9c6 |  
  9. 后:  
  10. | 10.155.123.55  | kaka | *6bb4837eb74329105ee4568dda7dc67ed2ca2ad9 |  

3:删除用户:

[sql]  view plain  copy

  1. mysql> delete from `user` where host='10.155.123.55' and user='kaka';  
  2. query ok, 1 row affected (0.00 sec)  
  3.   
  4. mysql> flush privileges;  
  5. query ok, 0 rows affected (0.00 sec)  
  6.   
  7. mysql> select host,user,password from `user`;  
  8. ---------------- ------ -------------------------------------------   
  9. | host           | user | password                                  |  
  10. ---------------- ------ -------------------------------------------   
  11. | localhost      | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  12. | tony\_ts\_tian | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  13. | 127.0.0.1      | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  14. | ::1            | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  15. | %              | root | *71abca8b06d46066cef8062a75256e66243d0fc8 |  
  16. ---------------- ------ -------------------------------------------   
  17. 5 rows in set (0.00 sec)  

4. 权限分配

[plain]  view plain  copy

  1. grant语法:     
  2.    grant 权限 on 数据库.* to 用户名@'登录主机' identified by '密码'  
  3. 权限:  
  4.    all,alter,create,drop,select,update,delete  
  5.    新增用户:权限为usage,即为:"无权限",想要创建一个没有权限的用户时,可以指定usage  
  6. 数据库:  
  7.      *.*              表示所有库的所有表  
  8.      mylove.*         表示mylove库的所有表  
  9.      mylove.loves     表示mylove库的loves表   
  10. 用户名:  
  11.      mysql的账户名  
  12. 登陆主机:  
  13.      允许登陆到mysql server的客户端ip  
  14.      '%'表示所有ip  
  15.      'localhost' 表示本机  
  16.      '10.155.123.55' 特定ip  
  17. 密码:  
  18.       mysql的账户名对应的登陆密码  

注: identified by '密码',可选。

        grant会覆盖用户的部分信息,跟insert 、update执行功能一样。

给用户kaka分配test数据库下user表的查询select权限:

[sql]  view plain  copy

  1. mysql> grant select on test.user to kaka@'10.155.123.55' identified by '123456';  
  2. query ok, 0 rows affected (0.00 sec)  
  3. mysql> flush privileges;  
  4. query ok, 0 rows affected (0.00 sec)  
  5. mysql> show grants for 'kaka'@'10.155.123.55';  
  6. -----------------------------------------------------------------------------------------------------------------   
  7. | grants for [email protected]                                                                                   |  
  8. -----------------------------------------------------------------------------------------------------------------   
  9. | grant usage on *.* to 'kaka'@'10.155.123.55' identified by password '*6bb4837eb74329105ee4568dda7dc67ed2ca2ad9' |  
  10. | grant select on `test`.`user` to 'kaka'@'10.155.123.55'                                                         |  
  11. -----------------------------------------------------------------------------------------------------------------   
  12. 2 rows in set (0.00 sec)  

为了快速测试,我要把ip切回%,ip全访问:

使用和测试:

数据库和数据表请看: mysql数据定义语句:create(创建)命令、alter(修改)命令、drop(删除)

[sql]  view plain  copy

  1. mysql> use mysql  
  2. reading table information for completion of table and column names  
  3. you can turn off this feature to get a quicker startup with -a  
  4. database changed  
  5. 修改权限host为所有ip登陆:  
  6. mysql> update `user` set host='%' where host='10.155.123.55' and user='kaka';  
  7. query ok, 1 row affected (0.00 sec)  
  8. rows matched: 1  changed: 1  warnings: 0  
  9. 查看kaka的权限:  
  10. mysql> show grants for 'kaka'@'10.155.123.55';  
  11. -----------------------------------------------------------------------------------------------------------------   
  12. | grants for [email protected]                                                                                   |  
  13. -----------------------------------------------------------------------------------------------------------------   
  14. | grant usage on *.* to 'kaka'@'10.155.123.55' identified by password '*6bb4837eb74329105ee4568dda7dc67ed2ca2ad9' |  
  15. | grant select on `test`.`user` to 'kaka'@'10.155.123.55'                                                         |  
  16. -----------------------------------------------------------------------------------------------------------------   
  17. 2 rows in set (0.00 sec)  
  18. 刷新mysql的系统权限相关表  
  19. mysql> flush privileges;  
  20. query ok, 0 rows affected (0.00 sec)  
  21. 查看kaka的权限:  
  22. mysql> show grants for 'kaka'@'%';  
  23. -----------------------------------------------------------------------------------------------------   
  24. | grants for kaka@%                                                                                   |  
  25. -----------------------------------------------------------------------------------------------------   
  26. | grant usage on *.* to 'kaka'@'%' identified by password '*6bb4837eb74329105ee4568dda7dc67ed2ca2ad9' |  
  27. -----------------------------------------------------------------------------------------------------   
  28. 1 row in set (0.00 sec)  
  29. 给用户kaka分配weloveshare数据库下user表的查询select权限:  
  30. mysql> grant select on `weloveshare`.`user` to kaka@'%';  
  31. query ok, 0 rows affected (0.00 sec)  
  32. 查看kaka的权限:  
  33. mysql> show grants for 'kaka'@'%';  
  34. -----------------------------------------------------------------------------------------------------   
  35. | grants for kaka@%                                                                                   |  
  36. -----------------------------------------------------------------------------------------------------   
  37. | grant usage on *.* to 'kaka'@'%' identified by password '*6bb4837eb74329105ee4568dda7dc67ed2ca2ad9' |  
  38. | grant select on `weloveshare`.`user` to 'kaka'@'%'                                                  |  
  39. -----------------------------------------------------------------------------------------------------   
  40. 2 rows in set (0.00 sec)  
  41. 查看weloveshare数据库下user表的数据:  
  42. mysql> use weloveshare  
  43. reading table information for completion of table and column names  
  44. you can turn off this feature to get a quicker startup with -a  
  45. database changed  
  46. mysql> select * from user;  
  47. empty set (0.00 sec)  
  48. 退出当前用户:  
  49. mysql> exit;  
  50. bye  
  51. 切换用户kaka:  
  52. [root@tony_ts_tian ~]# mysql -u kaka -p  
  53. enter password:   
  54. 登录成功。  
  55. 切换数据库,查看user表数据:  
  56. mysql> use weloveshare  
  57. reading table information for completion of table and column names  
  58. you can turn off this feature to get a quicker startup with -a  
  59.   
  60. database changed  
  61. mysql> select * from user;  
  62. empty set (0.00 sec)  
  63. 插入数据:  
  64. mysql> insert into `weloveshare`.`user`(uname,upass,ustatus) values('kaka','kaka123','0');  
  65. error 1142 (42000): insert command denied to user 'kaka'@'localhost' for table 'user'  
  66. 提示:insert被拒绝。配置成功。  

[sql]  view plain  copy

  1. 注:`weloveshare`.`user`数据库名.数据表名,kaka用户名,%为host,ip可限制或不 localhost,%,192.168.10.%  
  2. grant创建、修改、删除、更新、查询mysql数据表结构权限:  
  3. grant create on `weloveshare`.`user` to kaka@'%';   
  4. grant alter on `weloveshare`.`user` to kaka@'%';   
  5. grant drop on `weloveshare`.`user` to kaka@'%';   
  6. grant update on `weloveshare`.`user` to kaka@'%';   
  7. grant select on `weloveshare`.`user` to kaka@'%';   
  8. grant操作mysql外键权限:  
  9. grant references on `weloveshare`.`user` to kaka@'%';   
  10. grant操作mysql 临时表权限:  
  11. grant create temporary tables on `weloveshare`.`user` to kaka@'%';   
  12. grant操作mysql索引权限  
  13. grant index on `weloveshare`.`user` to kaka@'%';   
  14. grant操作mysql视图、查看视图源代码权限:  
  15. grant create view on `weloveshare`.`user` to kaka@'%';   
  16. grant show view on `weloveshare`.`user` to kaka@'%';   
  17. grant操作mysql存储过程(查看状态,删除修改)、函数权限。  
  18. grant create routine on `weloveshare`.`user` to kaka@'%';   
  19. grant create routine on `weloveshare`.`user` to kaka@'%';   
  20. grant execute on `weloveshare`.`user` to kaka@'%';  

注:其他的详细权限,请查看,备注附件(最后)。

5:查看数据库登陆所有用户:

[sql]  view plain  copy

  1. mysql> select distinct concat('user: ''',user,'''@''',host,''';') as query from mysql.user;  
  2. --------------------------------   
  3. | query                          |  
  4. --------------------------------   
  5. | user: 'kaka'@'%';              |  
  6. | user: 'root'@'%';              |  
  7. | user: 'root'@'127.0.0.1';      |  
  8. | user: 'root'@'::1';            |  
  9. | user: 'root'@'localhost';      |  
  10. | user: 'root'@'tony\_ts\_tian'; |  
  11. --------------------------------   
  12. 6 rows in set (0.00 sec)  

查看某个用户的具体权限,比如root:

[sql]  view plain  copy

  1. mysql> show grants for 'root'@'%';  
  2. --------------------------------------------------------------------------------------------------------------------------------   
  3. | grants for root@%                                                                                                              |  
  4. --------------------------------------------------------------------------------------------------------------------------------   
  5. | grant all privileges on *.* to 'root'@'%' identified by password '*71abca8b06d46066cef8062a75256e66243d0fc8' with grant option |  
  6. --------------------------------------------------------------------------------------------------------------------------------   
  7. 1 row in set (0.00 sec)  

[sql]  view plain  copy

  1. mysql> select * from mysql.user where user='root' \g  

注:\g为按列显示数据。

备注附件:

查看mysql数据中user表的表结构:

[sql]  view plain  copy

  1. mysql> desc mysql.user;  
  2. ------------------------ ------------------- ------ ----- ----------- -------   
  3. | field                  | type              | null | key | default   | extra |  
  4. ------------------------ ------------------- ------ ----- ----------- -------   
  5. | host                   | char(60)          | no   | pri |           |       |  
  6. | user                   | char(16)          | no   | pri |           |       |  
  7. | password               | char(41)          | no   |     |           |       |  
  8. | select_priv            | enum('n','y')     | no   |     | n         |       |  
  9. | insert_priv            | enum('n','y')     | no   |     | n         |       |  
  10. | update_priv            | enum('n','y')     | no   |     | n         |       |  
  11. | delete_priv            | enum('n','y')     | no   |     | n         |       |  
  12. | create_priv            | enum('n','y')     | no   |     | n         |       |  
  13. | drop_priv              | enum('n','y')     | no   |     | n         |       |  
  14. | reload_priv            | enum('n','y')     | no   |     | n         |       |  
  15. | shutdown_priv          | enum('n','y')     | no   |     | n         |       |  
  16. | process_priv           | enum('n','y')     | no   |     | n         |       |  
  17. | file_priv              | enum('n','y')     | no   |     | n         |       |  
  18. | grant_priv             | enum('n','y')     | no   |     | n         |       |  
  19. | references_priv        | enum('n','y')     | no   |     | n         |       |  
  20. | index_priv             | enum('n','y')     | no   |     | n         |       |  
  21. | alter_priv             | enum('n','y')     | no   |     | n         |       |  
  22. | show_db_priv           | enum('n','y')     | no   |     | n         |       |  
  23. | super_priv             | enum('n','y')     | no   |     | n         |       |  
  24. | create_tmp_table_priv  | enum('n','y')     | no   |     | n         |       |  
  25. | lock_tables_priv       | enum('n','y')     | no   |     | n         |       |  
  26. | execute_priv           | enum('n','y')     | no   |     | n         |       |  
  27. | repl_slave_priv        | enum('n','y')     | no   |     | n         |       |  
  28. | repl_client_priv       | enum('n','y')     | no   |     | n         |       |  
  29. | create_view_priv       | enum('n','y')     | no   |     | n         |       |  
  30. | show_view_priv         | enum('n','y')     | no   |     | n         |       |  
  31. | create_routine_priv    | enum('n','y')     | no   |     | n         |       |  
  32. | alter_routine_priv     | enum('n','y')     | no   |     | n         |       |  
  33. | create_user_priv       | enum('n','y')     | no   |     | n         |       |  
  34. | event_priv             | enum('n','y')     | no   |     | n         |       |  
  35. | trigger_priv           | enum('n','y')     | no   |     | n         |       |  
  36. | create_tablespace_priv | enum('n','y')     | no   |     | n         |       |  
  37. | ssl_type               | enum('','any','x509','specified') | no  || |       |  
  38. | ssl_cipher             | blob              | no   |     | null      |       |  
  39. | x509_issuer            | blob              | no   |     | null      |       |  
  40. | x509_subject           | blob              | no   |     | null      |       |  
  41. | max_questions          | int(11) unsigned  | no   |     | 0         |       |  
  42. | max_updates            | int(11) unsigned  | no   |     | 0         |       |  
  43. | max_connections        | int(11) unsigned  | no   |     | 0         |       |  
  44. | max_user_connections   | int(11) unsigned  | no   |     | 0         |       |  
  45. | plugin                 | char(64)          | yes  || mysql_native_password ||  
  46. | authentication_string  | text              | yes  |     | null      |       |  
  47. | password_expired       | enum('n','y')     | no   |     | n         |       |  
  48. ------------------------ ------------------- ------ ----- ----------- -------   
  49. 43 rows in set (0.00 sec)  

查看root用户的所有具体权限:

[sql]  view plain  copy

  1.                host: %  
  2.                user: root  
  3.            password: *71abca8b06d46066cef8062a75256e66243d0fc8  
  4.         select_priv: y  
  5.         insert_priv: y  
  6.         update_priv: y  
  7.         delete_priv: y  
  8.         create_priv: y  
  9.           drop_priv: y  
  10.         reload_priv: y  
  11.       shutdown_priv: y  
  12.        process_priv: y  
  13.           file_priv: y  
  14.          grant_priv: y  
  15.     references_priv: y  
  16.          index_priv: y  
  17.          alter_priv: y  
  18.        show_db_priv: y  
  19.          super_priv: y  
  20. eate_tmp_table_priv: y  
  21.    lock_tables_priv: y  
  22.        execute_priv: y  
  23.     repl_slave_priv: y  
  24.    repl_client_priv: y  
  25.    create_view_priv: y  
  26.      show_view_priv: y  
  27. create_routine_priv: y  
  28.  alter_routine_priv: y  
  29.    create_user_priv: y  
  30.          event_priv: y  
  31.        trigger_priv: y  
  32. ate_tablespace_priv: y  
  33.            ssl_type:   
  34.          ssl_cipher:   
  35.         x509_issuer:   
  36.        x509_subject:   
  37.       max_questions: 0  
  38.         max_updates: 0  
  39.     max_connections: 0  
  40. ax_user_connections: 0  
  41.              plugin: mysql_native_password  
  42. thentication_string:   
  43.    password_expired: n  

参数说明:

[sql]  view plain  copy

  1. select_priv:用户可以通过select命令选择数据。  
  2. insert_priv:用户可以通过insert命令插入数据;  
  3. update_priv:用户可以通过update命令修改现有数据;  
  4. delete_priv:用户可以通过delete命令删除现有数据;  
  5. create_priv:用户可以创建新的数据库和表;  
  6. drop_priv:用户可以删除现有数据库和表;  
  7. reload_priv:用户可以执行刷新和重新加载mysql所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表;重新加载权限表;  
  8. shutdown_priv:用户可以关闭mysql服务器;在将此权限提供给root账户之外的任何用户时,都应当非常谨慎;  
  9. process_priv:用户可以通过show processlist命令查看其他用户的进程;服务器管理;  
  10. file_priv:用户可以执行select into outfile和load data infile命令;加载服务器上的文件;  
  11. grant_priv:用户可以将已经授予给该用户自己的权限再授予其他用户(任何用户赋予全部已有权限);  
  12. references_priv;目前只是某些未来功能的占位符;现在没有作用;  
  13. index_priv:用户可以创建和删除表索引;用索引查询表;  
  14. alter_priv:用户可以重命名和修改表结构;  
  15. show_db_priv:用户可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库;可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因;  
  16. super_priv:用户可以执行某些强大的管理功能,例如通过kill命令删除用户进程,使用set global修改全局mysql变量,执行关于复制和日志的各种命令;超级权限;  
  17. create_tmp_table_priv:用户可以创建临时表;  
  18. lock_tables_priv:用户可以使用lock tables命令阻止对表的访问/修改;  
  19. execute_priv:用户可以执行存储过程;此权限只在mysql 5.0及更高版本中有意义;  
  20. repl_slave_priv:用户可以读取用于维护复制数据库环境的二进制日志文件;此用户位于主系统中,有利于主机和客户机之间的通信;主服务器管理;  
  21. repl_client_priv:用户可以确定复制从服务器和主服务器的位置;从服务器管理;  
  22. create_view_priv:用户可以创建视图;此权限只在mysql 5.0及更高版本中有意义;  
  23. show_view_priv:用户可以查看视图或了解视图如何执行;此权限只在mysql 5.0及更高版本中有意义;  
  24. create_routine_priv:用户可以更改或放弃存储过程和函数;此权限是在mysql 5.0中引入的;  
  25. alter_routine_priv:用户可以修改或删除存储函数及函数;此权限是在mysql 5.0中引入的;  
  26. create_user_priv:用户可以执行create user命令,这个命令用于创建新的mysql账户;  
  27. event_priv:用户能否创建、修改和删除事件;这个权限是mysql 5.1.6新增的;  
  28. trigger_priv:用户能否创建和删除触发器,这个权限是mysql 5.1.6新增的;  
  29. create_tablespace_priv:创建表空间  
  30. ssl_type:支持ssl标准加密安全字段  
  31. ssl_cipher:支持ssl标准加密安全字段  
  32. x509_issuer:支持x509标准字段  
  33. x509_subject:支持x509标准字段  
  34. max_questions:0 每小时允许执行多少次查询  
  35. max_updates:0 每小时可以执行多少次更新  :0表示无限制  
  36. max_connections:0 每小时可以建立的多少次连接:0表示无限制  
  37. max_user_connections:0 单用户可以同时具有的连接数:0表示无限制  
  38. plugin:5.5.7开始,mysql引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户   
  39. authentication_string:通过authentication_string可以控制两者的映射关系,(pam plugin等,pam可以支持多个服务名)尤其是在使用代理用户时,并须声明这一点  
  40. password_expired:密码过期 y,说明该用户密码已过期 n相反  
网站地图