MySQL讲义第 55 讲——用户权限管理之创建和删除用户

文章目录

  • MySQL讲义第 55 讲——用户权限管理之创建和删除用户
    • 一、创建用户
      • 1、使用 create user 命令创建用户
      • 2、使用 grant 命令创建用户
      • 3、使用 insert 语句向 user 表中插入记录
    • 二、查看用户权限信息
      • 1、查看用户及全局权限
      • 2、查看某个用户的权限
      • 3、查看某个用户的非权限信息
    • 三、删除用户

可以使用 create user 命令创建用户,此时创建的用户只具备登录权限,登录后只能执行一些不需要权限的操作。也可以使用 grant 命令创建用户同时授予相应的操作权限。也可以直接在 user 表中插入用户信息。

一、创建用户

1、使用 create user 命令创建用户

可以使用 CREATE USER 语句来创建 MySQL 用户并设置口令。语法格式如下:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';说明:
(1)用户名由两部分构成,格式为 'user_name'@'host_name'。其中 user_name 是用户名,host_name 为主机名,即用户连接 MySQL 时所在主机的名字,host_name 可以是主机名或者 ipv4/ipv6 的地址。 Localhost 代表本机, 127.0.0.1代表 ipv4 本机地址, ::1 代表ipv6的本机地址。host_name 允许使用 % 和 _ 作为通配符,如 '%.mysql.com' 代表来自 mysql.com 这个域名下的所有主机,'192.168.1.%' 代表所有来自 '192.168.1' 网段的主机。
(2)IDENTIFIED BY:用于指定用户账号对应的口令,若该用户账号无口令,则可省略此子句。

主机名举例:

User 值 Host 值 允许的连接
‘fred’ ‘h1.example.net’ 允许 fred 用户使用域名 h1.example.net 连接
‘’ ‘h1.example.net’ 允许任何用户使用域名 h1.example.net 连接
‘fred’ ‘%’ 允许 fred 用户使用任何主机连接
‘’ ‘%’ 允许任何用户使用任何主机连接
‘fred’ ‘%.example.net’ 允许 fred 用户使用 example.net 域中的任何主机连接
‘fred’ ‘198.51.100.177’ 允许 fred 用户使用 IP 地址为 198.51.100.177 的主机连接
‘fred’ ‘198.51.100.%’ 允许 fred 用户使用 198.51.100 子网中的任何主机连接
‘fred’ ‘198.51.100.0/255.255.255.0’ 允许 fred 用户使用 198.51.100 子网中的任何主机连接

使用 CREATE USER 语句的注意事项:

(1)如果使用 CREATE USER 语句时没有为用户指定口令,那么 MySQL 允许该用户可以不使用口令登录系统。
(2)使用 CREATE USER 语句必须拥有 MySQL 中 MySQL 数据库的 INSERT 权限或全局 CREATE USER 权限。
(3)使用 CREATE USER 语句创建一个用户账号后,会在系统自身的 MySQL 数据库的 user 表中添加一条新记录。若创建的账户已经存在,则语句执行时会出现错误。
(4)新创建的用户拥有的权限很少。可以登录 MySQL,只允许进行不需要权限的操作,如使用 SHOW 语句查询所有存储引擎和字符集的列表等。
(5)如果两个用户具有相同的用户名和不同的主机名,MySQL 会将他们视为不同的用户,并允许为这两个用户分配不同的权限集合。

举例:

mysql> CREATE USER 'u1'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

2、使用 grant 命令创建用户

可以使用 GRANT 命令创建用户同时为用户授予相应的权限。语法格式如下:

GRANT 权限列表 ON database_name.table_name TO 'user_name'@'host_name'
IDENTIFIED BY 'password' WITH GRANT OPTION;说明:
(1)权限列表:授予新建用户的权限列表。
(2)ON:指定用户可以访问的数据库、表、列信息。
(3)'user_name'@'host_name':指定用户名和登录主机。
(4)IDENTIFIED BY:设置用户的登录密码。
(5)WITH GRANT OPTION:设置该用户能否把自己拥有的权限授予其他用户。

举例:

--### 为 u2 用户授权时不使用 WITH GRANT OPTION,则 u2 不能将自己所拥有的权限授予其他用户
mysql> GRANT SELECT ON *.* TO 'u2'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
--### 为 u3 用户授权时使用 WITH GRANT OPTION,则 u3 可以将自己所拥有的权限授予其他用户
mysql> GRANT SELECT ON *.* TO 'u3'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

登录测试:

(1)使用 u2 账户登录

[root@oracle-rac2 ~]# mysql -uu2 -p123456;
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.7.31 MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> grant select on hist.* to 'user03'@'localhost';
ERROR 1044 (42000): Access denied for user 'u2'@'localhost' to database 'hist'

(2)使用 u3 账户登录

[root@oracle-rac2 ~]# mysql -uu3 -p123456;
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 5.7.31 MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> grant select on hist.* to 'user04'@'localhost';
Query OK, 0 rows affected (0.00 sec)

3、使用 insert 语句向 user 表中插入记录

可以使用 INSERT 命令直接向 mysql.user 表插入用户信息,例如:

INSERT INTO mysql.user(HOST,USER,AUTHENTICATION_STRING,ssl_cipher,x509_issuer,x509_subject)
VALUES('localhost','wang',PASSWORD('123456'),'','','');
Query OK, 1 row affected, 1 warning (0.00 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

使用 wang 用户登录MySQL:

[root@oracle-rac2 ~]# mysql -uwang -p123456;
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 28
Server version: 5.7.31 MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

二、查看用户权限信息

1、查看用户及全局权限

直接查询 mysql.user 表即可。例如:

SELECT user,host,authentication_string
FROM mysql.user;
+---------------+--------------+-------------------------------------------+
| user          | host         | authentication_string                     |
+---------------+--------------+-------------------------------------------+
| root          | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| mysql.session | localhost    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| wgx           | 192.168.1.20 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| zhang         | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| user01        | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| user02        | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| user03        | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| user04        | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| u1            | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| u2            | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| u3            | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| wang          | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+---------------+--------------+-------------------------------------------+
13 rows in set (0.01 sec)SELECT *
FROM mysql.user
WHERE user = 'user01' AND host = 'localhost'\G
*************************** 1. row ***************************Host: localhostUser: user01Select_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: NReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: Y
Create_tablespace_priv: Yssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9password_expired: Npassword_last_changed: 2020-12-06 14:18:38password_lifetime: NULLaccount_locked: N
1 row in set (0.00 sec)

2、查看某个用户的权限

使用 show grant 命令可以查看某个用户的权限,例如:

mysql> SHOW GRANTS FOR 'user04'@'localhost';
+---------------------------------------------------------------------+
| Grants for user04@localhost                                         |
+---------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user04'@'localhost'                          |
| GRANT SELECT ON `hist`.* TO 'user04'@'localhost'                    |
| GRANT SELECT (e_name, e_id) ON `hist`.`emp` TO 'user04'@'localhost' |
+---------------------------------------------------------------------+
3 rows in set (0.00 sec)

3、查看某个用户的非权限信息

使用 show create user 命令可以查看某个用户的其他信息,例如:

mysql> SHOW CREATE USER 'user04'@'localhost'\G
*************************** 1. row ***************************
CREATE USER for user04@localhost: CREATE USER 'user04'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED
2CA2AD9' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK
1 row in set (0.00 sec)

三、删除用户

可以使用 drop user 命令删除用户,例如:

SELECT host,user
FROM mysql.user
WHERE user = 'u3' and host = 'localhost';
+-----------+------+
| host      | user |
+-----------+------+
| localhost | u3   |
+-----------+------+
1 row in set (0.01 sec)mysql> DROP USER 'u3'@'localhost';
Query OK, 0 rows affected (0.00 sec)mysql> SELECT host,user-> FROM mysql.user-> WHERE user = 'u3' and host = 'localhost';
Empty set (0.00 sec)

MySQL讲义第 55 讲——用户权限管理之创建和删除用户相关推荐

  1. MySQL(入门篇18)SQLyog 的用户权限管理 ; SQL语句的用户权限管理。

    一.SQLyog 的用户权限管理 1. 创建用户 2. 修改账号和密码 1.登入刚拿创建的jarvan2改账号和密码. 3. 查看和修改权限 4. 点击历史SQL代码就能看到图形化界面对应的SQL语句 ...

  2. linux php 用户权限管理,LINUX教程:Linux用户及权限管理

    <LINUX教程:Linux用户及权限管理>要点: 本文介绍了LINUX教程:Linux用户及权限管理,希望对您有用.如果有疑问,可以联系我们. [文件治理.管道.用户及组治理.用户及权限 ...

  3. oracle 删除系统用户,Oracle数据库如何创建和删除用户

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1. 创建用户: SQL> create user user01 identified by user01; User created. 但登录提示 ...

  4. 数据库—用户权限管理(三十三)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.概述 二.用户权限类型 ​三.用户赋权 四.权限删除 五.用户删除 前言 数据库用户权限管理是指对数据库用户的权限进行 ...

  5. aix oracle 登录用户,AIX 系统及 Oracle 数据库用户权限管理

    AIX 系统及Oracle 数据库用户权限管理 1.AIX 系统用户管理.系统用户管理 1.1 对于root 用户.在aix 系统中root 账户是具有最高特权的,因此保护好root 的密码尤为重要, ...

  6. 基于LDAP的WebLogic虚拟化统一用户权限管理

    0 引言 随着国家电网SG186工程建设的深入,企业门户的建设也开始由省电力公司一级向地市供电公司一级延伸.根据国家电网门户典型设计,河南省电力公司采用了虚拟方式建设全省各地市门户.由于虚拟门户的软. ...

  7. AdminEx后台管理系统模板、用户权限管理设计、按钮级别

    一.前言 最近有时间研究了一下做后台管理系统的模板界面,开源的比较知名很早之前就用过EasyUI.Vue+ElementUI,Layui,Bootstrap等. EasyUI个人感觉功能强大,帮助we ...

  8. MySQL讲义第2讲——数据库操作

    MySQL讲义第2讲--数据库操作 文章目录 MySQL讲义第2讲--数据库操作 一.创建数据库 1.查看MySQL默认的字符集和校对规则 2.创建数据库时省略字符集和校对规则 3.创建数据库时指定字 ...

  9. linux无法删除用户的组,Linux无法使用userdel删除用户和组的解决办法

    转自:http://www.linuxidc.com/Linux/2013-07/87371.htm 简述: 今天在看书的时候,看到有个实例,手痒痒的跟着做了起来...但是,出现问题了..测试的用户和 ...

最新文章

  1. 计算机电路基础学什么,"计算机电路基础"学习辅导.doc
  2. 2009年全国计算机软件考试推荐用书目录
  3. C++走向远洋——63(项目二2、两个成员的类模板)
  4. EJB3.0学习笔记---第一个EJB程序:
  5. 张高兴的 Windows 10 IoT 开发笔记:BMP180 气压传感器
  6. 一起谈.NET技术,asp.net控件开发基础(9)
  7. creo减速器建模实例,减速箱proE整体及零件图
  8. blackberry 9630CDMA写号教程
  9. 怎么禁止使用计算机的软件,电脑如何禁止程序运行 一键彻底禁止电脑软件运行方法...
  10. 机器学习(周志华)学习笔记(二)
  11. 0x0000011b共享打印机无法连接解决方法
  12. guitar pro8.1免费的吉他学习辅助软件
  13. 业界天花板 | 四度入围Gartner全球《数据防泄露市场指南》
  14. STM32自定义USB设备开发详细流程讲解及全套资料源码下载(基于libusb)
  15. 软件技术专业需要学什么?
  16. eclipse 配置字符集 字体大小 护眼
  17. 不同意安装条款就没法使用?新法规对APP霸王条款说“不”
  18. 启航,超越-动网论坛.NET 1.0正式版发布
  19. java.lang.NoSuchFieldError: No static field id_sl_hlry of type I in class Lcom/bsoft/mob/common/R$id
  20. Linux自学参考总结

热门文章

  1. 单片机 液晶显示实验 (原理图加代码)
  2. 计算机无法关闭怎么办,电脑进程无法关闭怎么办
  3. 【python实现倒计时】
  4. 程序员干货:从写简历,到面试、谈薪酬的那些技巧和防坑指南!
  5. EXCEL完成多条件多结果查找多行多列变一列
  6. 利用ADO.NET处理数据的简单之处
  7. 联想拯救者Y7000P-RTX3060安装显卡驱动 CUDA cudnn anaconda pytorch pycharm
  8. php冒泡排序 讲解,PHP冒泡排序(Bubble Sort)算法详解
  9. 美国访问学者的申请条件
  10. Python知识点解析之urlopen()讲解