一. 权限管理

1.“用户 + IP”的概念

MySQL中同一个用户名,比如db,能否登录,以及用什么密码登录,可以访问什么库等等,都需要加上IP,才可以表示一个完整的用户标识

db@127.0.0.1db@loalhost 以及 db@192.168.1.100 这三个其实是不同用户标识 ,即不同的用户名

2. 用户权限管理

  • 系统表权限信息:

    • a) 用户名和IP是否允许
    • b) 查看mysql.user表 // 查看全局所有库的权限
    • c) 查看mysql.db表 // 查看指定库的权限
    • d) 查看mysql.table_priv表 // 查看指定表的权限
    • e) 查看mysql.column_priv表 // 查看指定列的权限
  • 常用权限:

    • SQL语句:SELECT、INSERT、UPDATE、DELETE、INDEX
    • 存储过程:CREATE ROUTINE、ALTER ROUTINE、EXECUTE、TRIGGER
    • 管理权限:SUPER、RELOAD、SHOW DATABASE、SHUTDOWN、

    所有权限

  • 可选资源:

    • MAX_QUERIES_PER_HOUR count
    • MAX_UPDATES_PER_HOUR count
    • MAX_CONNECTIONS_PER_HOUR count
    • MAX_USER_CONNECTIONS count

    tips:只能精确到小时,对于部分场景不适用,可以考虑中间件方式

  • 显示当前用户的权限

  1. #这三个是同一个意思
  2. mysql> show grants;
  3. mysql> show grants for current_user;
  4. mysql> show grants for current_user();

3. 基本操作

  1. mysql> create user 'db'@'127.0.0.1' identified by '123';
  2. #创建一个认证用户为'db'@'127.0.0.1',密码是123
  3. mysql> grant all on sysbench.* to 'sbb'@'127.0.0.1';
  4. #授予他sysbench库下面所有表的所有访问权限; *.*表示所有库的所有表
  5. mysql> grant all on sysbench.* to 'alex'@'127.0.0.1' identified by '123456';
  6. #这个grant语句会搜索用户,如果用户不存在,则自动创建用户,
  7. #如果不带identified by, 则该用户名密码为空
  8. mysql> grant all on *.* to 'gcdb'@'192.168.24.%' identified by 'iforgot' with grant option;
  9. #表示这个用户'gcdb'@'127.0.0.1'可以访问所有库的所有表,
  10. #同时,他还可以给其他用户授予权限(with grant option),
  11. #注意如果,*.*改成了某一个指定的非USER库,
  12. #则gcdb没法去新建其他用户了,因为User库没有权限了
  13. #192.168.24.% 表示属于192.168.24.0/24网段的用户可以访问

4. 撤销权限

  • revoke 关键字,该关键字只删除用户权限,不删除用户
  • revoke 语法同grant一致, 从grant ... to 变为revoke ... from

5.授权和创建用户

  • GRANT与创建用户
  1. mysql> grant select on sysbench.* to 'fanghao'@'localhost' identified by 'haoshijiwudi';
  2. Query OK, 0 rows affected, 2 warnings (0.00 sec)
  3. -- 这里有2warning
  4. mysql> show warnings;
  5. --输入warningMessage如下:
  6. | Warning | 1285 | MySQL is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work |
  7. | Warning | 1287 | Using GRANT for creating new user is deprecated and will be removed in future release.Create new user with CREATE USER statement. |
  8. --第一条的意思,跳过域名解析模式,暂时不管
  9. --第二条的意思是使用GRANT赋权限的同时创建'fanghao'@'localhost'这个用户,但是出现了warning,从给出的提示看来,以后的MySQL版本会废弃掉这种方式
  10. --正确的创建用户并赋权的方式:
  11. mysql> drop user 'fanghao'@'localhost';
  12. Query OK, 0 rows affected (0.00 sec)
  13. mysql> create user 'fanghao'@'localhost' identified by 'haoshijiwudi';
  14. Query OK, 0 rows affected (0.00 sec)
  • 查看某一个用户的权限
  1. mysql> show grants for 'fanghao'@'localhost';
  2. +-------------------------------------------------------+
  3. | Grants for fanghao@localhost |
  4. +-------------------------------------------------------+
  5. | GRANT USAGE ON *.* TO 'fanghao'@'localhost' | --USAGE表示用户可以登录
  6. | GRANT SELECT ON `sysbench`.* TO 'fanghao'@'localhost' | --对sysbench库的所有表有select权限
  7. +-------------------------------------------------------+
  8. 2 rows in set (0.00 sec)
  • 删除某一个用户
  1. mysql> drop user 'fanghao'@'localhost';
  2. Query OK, 0 rows affected (0.00 sec)
  • MySQL权限信息
  1. mysql> select * from mysql.user where user='fanghao' \G;
  2. *************************** 1. row ***************************
  3. Host: localhost
  4. User: fanghao ---由于fanghao用户是对sysbench库有权限,所以这里(USER)全是N
  5. Select_priv: N
  6. Insert_priv: N
  7. Update_priv: N
  8. Delete_priv: N
  9. Create_priv: N
  10. Drop_priv: N
  11. Reload_priv: N
  12. Shutdown_priv: N
  13. Process_priv: N
  14. File_priv: N
  15. Grant_priv: N
  16. References_priv: N
  17. Index_priv: N
  18. Alter_priv: N
  19. Show_db_priv: N
  20. Super_priv: N
  21. Create_tmp_table_priv: N
  22. Lock_tables_priv: N
  23. Execute_priv: N
  24. Repl_slave_priv: N
  25. Repl_client_priv: N
  26. Create_view_priv: N
  27. Show_view_priv: N
  28. Create_routine_priv: N
  29. Alter_routine_priv: N
  30. Create_user_priv: N
  31. Event_priv: N
  32. Trigger_priv: N
  33. Create_tablespace_priv: N
  34. ssl_type:
  35. ssl_cipher:
  36. x509_issuer:
  37. x509_subject:
  38. max_questions: 0
  39. max_updates: 0
  40. max_connections: 0
  41. max_user_connections: 0
  42. plugin: mysql_native_password
  43. authentication_string: *1A7B1D37BD4148AD15497C3803F812C91047EC4F
  44. password_expired: N
  45. password_last_changed: 2017-11-22 16:31:57
  46. password_lifetime: NULL
  47. account_locked: N -- 如果这里为Y表示被锁定,该用户就无法使用了
  48. 1 row in set (0.01 sec)
  49. mysql> select * from mysql.db where user='fanghao' \G;
  50. *************************** 1. row ***************************
  51. Host: localhost --授权主机
  52. Db: sysbench --sysbench数据库
  53. User: fanghao --用户名
  54. Select_priv: Y --授权的select权限
  55. Insert_priv: N
  56. Update_priv: N
  57. Delete_priv: N
  58. Create_priv: N
  59. Drop_priv: N
  60. Grant_priv: N
  61. References_priv: N
  62. Index_priv: N
  63. Alter_priv: N
  64. Create_tmp_table_priv: N
  65. Lock_tables_priv: N
  66. Create_view_priv: N
  67. Show_view_priv: N
  68. Create_routine_priv: N
  69. Alter_routine_priv: N
  70. Execute_priv: N
  71. Event_priv: N
  72. Trigger_priv: N --注意: 不建议使用INSERT或者GRANT对元数据表进行修改,来达到修改权限的目的
  73. 1 row in set (0.01 sec)
  74. --使用fanghao账号登陆
  75. mysql> select user();
  76. +-------------------+
  77. | user() |
  78. +-------------------+
  79. | fanghao@localhost |
  80. +-------------------+
  81. 1 row in set (0.00 sec)
  82. mysql> show databases;
  83. +--------------------+
  84. | Database |
  85. +--------------------+
  86. | information_schema | -- 这是一个统计信息的数据库,use可以进去,部分表没有权限查询
  87. | sysbench |
  88. +--------------------+
  89. 2 rows in set (0.00 sec)
  90. mysql> select * from views;
  91. Empty set (0.00 sec)
  92. mysql> select * from innodb_cmp;
  93. ERROR 1227 (42000): Access denied; you need (at least one of) the PROCESS privilege(s) for this operation

二. MySQL模拟角色

  • 角色的定义:

    • 角色(Role)可以用来批量管理用户,同一个角色下的用户,拥有相同的权限。 MySQL5.7.X以后可以模拟角色(Role)的功能,通过mysql.proxies_priv模拟实现。
    • mysql.proxies_priv在5.5.X和5.6.X的时候就存在,但是无法模拟角色(Role)功能。
  • 模拟角色操作:

  1. mysql> create user 'shiji_dba'@'localhost'; -- 相当于定于一个老司机角色(Role), -- 但这只是个普通的用户,名字比较有(Role)的感觉 -- 有点类似用户组
  2. Query OK, 0 rows affected (0.00 sec)
  3. mysql> create user 'bangwen'@‘localhost’; --测试用户(邦文袍哥)
  4. Query OK, 0 rows affected (0.00 sec)
  5. mysql> create user 'xuge'@'localhost'; --测试用户(许哥小司机)
  6. Query OK, 0 rows affected (0.00 sec)
  7. mysql> grant proxy on 'shiji_dba'@'localhost' to 'bangwen'@‘localhost’; -- shiji_dba的权限映射(map)给bangwen
  8. Query OK, 0 rows affected, 2 warnings (0.00 sec)
  9. mysql> grant proxy on 'shiji_dba'@'localhost' to 'xuge'@‘localhost’; -- shiji_dba的权限映射(map)给xuge
  10. Query OK, 0 rows affected, 3 warnings (0.00 sec)
  11. mysql> show grants for 'shiji_dba'@'localhost'; -- 查看shiji_dba角色赋予的实际权限
  12. +---------------------------------------------------------+
  13. | Grants for shiji_dba@localhost |
  14. +---------------------------------------------------------+
  15. | GRANT USAGE ON *.* TO 'shiji_dba'@'localhost' |
  16. | GRANT SELECT ON `sysbench`.* TO 'shiji_dba'@'localhost' |
  17. +---------------------------------------------------------+
  18. mysql> show grants for 'bangwen'@‘localhost’; -- 查看bangwen老司机的权限
  19. +-----------------------------------------------------------------------+
  20. | Grants for bangwen@localhost |
  21. +-----------------------------------------------------------------------+
  22. | GRANT USAGE ON *.* TO 'bangwen'@'‘localhost’' |
  23. | GRANT PROXY ON 'shiji_dba'@'localhost' TO 'bangwen'@'‘localhost’' |
  24. +-----------------------------------------------------------------------+
  25. 2 rows in set (0.00 sec)
  26. mysql> select * from mysql.proxies_priv; -- 查看 proxies_priv的权限
  27. +-----------------+---------+--------------+--------------+------------+----------------------+---------------------+
  28. | Host | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp |
  29. +-----------------+---------+--------------+--------------+------------+----------------------+---------------------+
  30. | localhost | root | | | 1 | boot@connecting host | 0000-00-00 00:00:00 |
  31. | localhost | bangwen | localhost | shiji_dba | 0 | root@localhost | 0000-00-00 00:00:00 |
  32. | localhost | xuge | localhost | shiji_dba | 0 | root@localhost | 0000-00-00 00:00:00 |
  33. +-----------------+---------+--------------+--------------+------------+----------------------+---------------------+
  34. 3 rows in set (0.00 sec)
  35. --总结mysql.proxies_priv仅仅是对Role的模拟,和Oracle的角色还是有所不同.官方称呼为Role like

三. Workbench与Utilities介绍

  • 下载

  • Workbench功能概述

    • SQL语句格式化 SQL关键字upcase MySQL Dashboard SQL语法提示 ER图 Forward Engine //ER图 --> DB表结构 Reverse //DB表结构 --> ER图
  • Utilities介绍和安装

    • MySQL Utilities介绍

      • MySQL Utilities 提供一组命令行工具用于维护和管理 MySQL 服务器,包括:

        • 管理工具 (克隆、复制、比较、差异、导出、导入)
        • 复制工具 (安装、配置)
        • 一般工具 (磁盘使用情况、冗余索引、搜索元数据)

MySQL Utilities是一系列的命令行工具以及Python库更容易完成管理的任务。库是用Python语言写的,这就意味着不需要安装其他任何工具和库。当前是基于Python2.6版本设计的,不支持Python3.1版本.

MySQL Utilities提供了各种平台的软件包,如果没有找到对应自己平台的包,可以通过源码进行编译安装。

最新的MySQL Utilities可以在此处下载:(http://dev.mysql.com/downloads/utilities/)

  • MySQL Utilities依赖环境

MySQL Utilities需要Python2.6版本,所有的代码都是基于该版本编写的。同时,还需要连接驱动MySQL Connector/Python通用版本(高于1.0.8)。

MySQL Connector/Python下载地址:http://dev.mysql.com/downloads/connector/python/

  • MySQL Utilities源码安装
  1. shell> wget -c https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-utilities-1.6.5.tar.gz
  2. shell> tar zxvf mysql-utilities-1.6.5.tar.gz
  3. shell> cd mysql-utilities-1.6.5
  4. shell> python ./setup.py build
  5. shell> python ./setup.py install

003:MySQL账号创建授权以及Workbench的更多相关文章

  1. mysql用户创建授权

    创建用户: grant select,update,insert,delete,create,drop,alter,index on *.* to 'jyx_mysql'@'%' identified ...

  2. mysql创建账号、授权、数据导出、导入

    1.账号创建及授权 grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant opti ...

  3. (转)mysql账号权限密码设置方法

    原文:http://www.greensoftcode.net/techntxt/2013410134247568042483 mysql账号权限密码设置方法 我的mysql安装在c:\mysql 一 ...

  4. MySQL新建用户,授权,删除用户,修改密码

    首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的.注:本操作是在WIN命令提示符下,phpMyAdmin同样适用.    用户:phplamp  用户数据库: ...

  5. MySQL新建用户,授权,删除用户,修改密码总结

    首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的. 注:本操作是在WIN命令提示符下,phpMyAdmin同样适用. 用户:rdingcn 用户数据库:rdi ...

  6. MySQL新建用户,授权,删除用户,修改密码等命令

    首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的. 注:本操作是在WIN命令提示符下,phpMyAdmin同样适用.     用户:phplamp   用户数 ...

  7. MySQL视图已经授权,但是无法访问

    开发发来问题说,开发环境的几个视图已经授权,但是指定用户登录后却无法访问.报错信息如下: [SQL]select * from ipost; [Err] - Access denied for use ...

  8. MySQL数据库grant授权命令

    MySQL数据库grant授权命令 制作人:全心全意 grant授权命令的使用 grant授权命令使用语法: grant 权限 on 数据库对象 to 用户 grant 权限 on 数据库对象 to ...

  9. 20190526 - CentOS 7 中 安装 MySQL 8 并授权 root 远程访问

    1. CentOS 7 中 安装 MySQL 8 CentOS 7 中内置 MariaDB 建议升级一下用,性能好很多.但如果一定要用 MySQL 8,就得自己装. 坦白的说,Oracle 升级 My ...

随机推荐

  1. 将VS2010环境设置为VC6.0样式(字体、前景色、背景色、Visual Assist X等)

    一.设置字体. 使用字体:Fixedsys Excelsior 3.01. 步骤1:下载字体. 步骤2:安装字体,控制面板->字体,复制下载的字体进去. 步骤3:打开VS2010,选择菜单:To ...

  2. LINUX系统下的磁盘共享

      在一台主机上实现磁盘的共享:在另一台主机中进行使用.具体操作如下: 1)在服务器端(server) 1.安装软件和磁盘的划分 yum install targetcli.noarch -y     ...

  3. mysql 数据传输报错 MySQL server has gone away With statement:

    利用navicat premium 拷贝数据库时,报错MySQL server has gone away With statement:, 造成这样的原因一般是sql操作的时间过长,或者是传送的数据 ...

  4. clean-css 安装 使用

    https://github.com/jakubpawlowicz/clean-css-cli https://davidwalsh.name/clean-css

  5. 重学CPP

    LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt After install ...

  6. IOS开发 Application Kit框架的线程安全

    以下部分介绍了Application Kit框架的线程安全. 非线程安全类 以下这些类和函数通常是非线程安全的.大部分情况下,你可以在任何线程使用这些类,只要你在同一时间只有一个线程使用它们.查看这些 ...

  7. 自己手写一个SpringMVC框架

    前端框架很多,但没有一个框架称霸,后端框架现在Spring已经完成大一统.所以学习Spring是Java程序员的必修课. Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实 ...

  8. IE只是开始!

    Study is boring,but devotion make it is easy!

  9. pytorch在CPU和GPU上加载模型

    pytorch允许把在GPU上训练的模型加载到CPU上,也允许把在CPU上训练的模型加载到GPU上.CPU->CPU,GPU->GPU torch.load('gen_500000.pkl ...

  10. 【剑指offer】11--旋转数组的最小数字(二分查找)

    原创博文,转载请注明出处! # 本文是牛客网<剑指offer>刷题笔记 1.题目 旋转数组的最小数字:输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1 ...