返回顶部
首页 > 资讯 > 数据库 >Mysql 中的三种创建用户的方式
  • 603
分享到

Mysql 中的三种创建用户的方式

mysql创建用户数据库Poweredby金山文档 2023-08-31 08:08:39 603人浏览 八月长安
摘要

创建普通用户 Mysql支持使用CREATE USER语句创建用户,使用GRANT语句创建用户,也可以通过操作mysql数据库下的user数据表来创建用户。 使用CREATE USER语句创建用户 执行CREATE USER语句时,M

创建普通用户

Mysql支持使用CREATE USER语句创建用户,使用GRANT语句创建用户,也可以通过操作mysql数据库下的user数据表来创建用户。

  1. 使用CREATE USER语句创建用户

执行CREATE USER语句时,Mysql会在user数据表中插入一条新创建的用户数据记录,语法格式如下:


CREATE USER [IF NOT EXISTS]    user [auth_option] [, user [auth_option]] ...    DEFAULT ROLE role [, role ] ...    [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]    [WITH resource_option [resource_option] ...]    [passWord_option | lock_option] ...user:    (see Section 6.2.4, “Specifying Account Names”)auth_option: {    IDENTIFIED BY 'auth_string'  | IDENTIFIED BY RANDOM PASSWORD  | IDENTIFIED WITH auth_plugin  | IDENTIFIED WITH auth_plugin BY 'auth_string'  | IDENTIFIED WITH auth_plugin BY RANDOM PASSWORD  | IDENTIFIED WITH auth_plugin AS 'auth_string'}tls_option: {   SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject'}resource_option: {    MAX_QUERIES_PER_HOUR count  | MAX_UPDATES_PER_HOUR count  | MAX_CONNECTIONS_PER_HOUR count  | MAX_USER_CONNECTIONS count}password_option: {    PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]  | PASSWORD HISTORY {DEFAULT | N}  | PASSWORD REUSE INTERVAL {DEFAULT | N DAY}  | PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]  | FaiLED_LOGIN_ATTEMPTS N  | PASSWORD_LOCK_TIME {N | UNBOUNDED}}lock_option: {    ACCOUNT LOCK  | ACCOUNT UNLOCK}

其中,部分参数说明如下:

·user:新建的用户名称。

·IDENTIFIED BY:设置用户的密码。

·IDENTIFIED WITH:为用户指定一个验证插件

·auth_plugin:验证插件的名称。

注意:在MySQL命令行中使用CREATE USER语句创建用户时,当前登录MySQL的用户必须拥有CREATE USER权限或者mysql数据库的INSERT(插入)权限。

(1)创建用户名为zhaoyanfei的MySQL用户,其主机名为localhost。


mysql> CREATE USER 'zhaoyanfei'@'localhost';Query OK, 0 rows affected

SQL语句执行成功,查看用户名为binghe的用户记录。


mysql> SELECT host,user,authentication_string FROM mysql.user WHERE user = 'zhaoyanfei';+-----------+------------+-----------------------+| host      | user       | authentication_string |+-----------+------------+-----------------------+| localhost | zhaoyanfei |                       |+-----------+------------+-----------------------+1 row in set

结果显示,成功创建了用户名为zhaoyanfei、主机为localhost的用户,此用户只能在MySQL服务所在的本地服务器连接MySQL服务。

使用新创建的zhaoyanfei用户连接MySQL服务时可以不用输入密码即可连接。

查看当前用户具有的数据库权限。


mysql> SHOW DATABASES;+--------------------+| Database           |+--------------------+| infORMation_schema |+--------------------+1 row in set (0.01 sec)

结果显示,当前用户只能访问information_schema数据库。

(2)MySQL在创建用户时,支持此用户在某个IP段内连接MySQL服务。例如,创建用户名为zhaoyanfei的用户,在192.168.31的IP段内可连接MySQL服务。


mysql> CREATE USER 'zhaoyanfei'@'192.168.31.%';Query OK, 0 rows affected (0.00 sec)

SQL语句执行成功,查看用户名为zhaoyanfei的数据记录。


mysql> SELECT    -> host, user, authentication_string    -> FROM mysql.user    -> WHERE user = 'zhaoyanfei';+---------------+--------+-----------------------+| host          | user   | authentication_string |+---------------+--------+-----------------------+| 192.168.31.% | zhaoyanfei |                       || localhost     | zhoayanfei |                       |+---------------+--------+-----------------------+2 rows in set (0.00 sec)

结果显示,此时mysql数据库下的user数据表中存在两条用户名为zhaoyanfei的数据记录,其中,主机名分别为192.168.31.%和localhost。主机名为192.168.31.%表明可以在192.168.31的IP段内连接MySQL服务。

注意:连接MySQL的方式和具有的数据库权限与在MySQL服务所在的本地服务器上连接MySQL的方式和具有的数据库权限相同,此处不再赘述。

(3)如果在创建MySQL用户时只指定了用户名部分,则主机名部分默认为%,表示所有的主机都可以使用当前用户名连接MySQL服务。


mysql> CREATE USER 'zhaoyanfei';Query OK, 0 rows affected (0.00 sec)

SQL语句执行成功,查看创建的用户信息。


mysql> SELECT    -> host, user, authentication_string    -> FROM mysql.user    -> WHERE user = 'zhaoyanfei';+---------------+--------+-----------------------+| host          | user   | authentication_string |+---------------+--------+-----------------------+| %             | zhaoyanfei |                       || 192.168.31.% | zhaoyanfei |                       || localhost     | zhaoyanfei |                       |+---------------+--------+-----------------------+3 rows in set (0.00 sec)

结果显示,创建的用户名为zhaoyanfei的数据记录中多了一条主机名为%的数据记录。

(4)创建MySQL用户时,可以指定用户的连接密码。


mysql> CREATE USER 'zhaoyanfei'@'localhost' IDENTIFIED BY '@zhaoyanfei123456';Query OK, 0 rows affected (0.10 sec)

SQL语句执行成功,查看创建的用户信息。


mysql> SELECT    -> host, user, authentication_string    -> FROM mysql.user    -> WHERE user = 'zhaoyanfei'; +---------------+--------+-------------------------------------------+| host          | user   | authentication_string                     |+---------------+--------+-------------------------------------------+| %             | zhaoyanfei |               || 192.168.31.% | zhaoyanfei |               || localhost     | zhaoyanfei | *027B07B8E65F17AD1283D290B33909F1B8D0E5BB |+---------------+--------+-------------------------------------------+3 rows in set (0.00 sec)

结果显示,主机名为localhost的用户存在密码。在连接MySQL服务时,MySQL内部使用内建的身份验证机制,需要输入密码@zhaoyanfei123456才能正确连接。


[root@binghe150 ~]# mysql -ubinghe -hlocalhost -pEnter password: Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 19Server version: 8.0.18 binghe editionCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

(5)如果知道密码的密文,MySQL支持使用密文为用户设置密码。首先,在MySQL命令行中获取密码的密文。在8.0 版本中执行此语句,会报错。

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL Server version for the right syntax to use near '('@zhaoyanfei123456')' at line 1


mysql> SELECT password('@zhaoyanfei123456');+-------------------------------------------+| password('@zhaoyanfei123456')                   |+-------------------------------------------+| *027B07B8E65F17AD1283D290B33909F1B8D0E5BB |+-------------------------------------------+1 row in set, 1 warning (0.00 sec)

接下来,创建MySQL用户。其中,主机名为192.168.31.223,用户名为zhaoyanfei。


mysql> CREATE USER 'zhaoyanfei'@'192.168.31.223' IDENTIFIED BY PASSWORD '*027B07B8E65F17AD1283D290B33909F1B8D0E5BB';Query OK, 0 rows affected (0.10 sec)

SQL语句执行成功,需要输入密码@zhaoyanfei123456才能正确连接MySQL服务。


(6)MySQL支持在创建用户时为用户设置插件认证方式,此时需要使用IDENTIFIED WITH语句。


mysql> CREATE USER 'zhaoyanfei'@'localhost'    -> IDENTIFIED WITH mysql_native_password BY '@zhaoyanfei123456';Query OK, 0 rows affected (0.00 sec)

SQL语句执行成功,此时连接MySQL服务,需要输入密码@zhaoyanfei123456才能正确连接。

  1. 使用GRANT语句创建用户

使用CREATE USER语句创建用户时,只是在mysql数据库下的user数据表中添加了一条记录,并没有为用户授权。使用GRANT语句创建用户,不仅可以添加用户,而且还能为用户赋予相应的权限。语法格式如下:


GRANT    priv_type [(column_list)]      [, priv_type [(column_list)]] ...    ON [object_type] priv_level    TO user [auth_option] [, user [auth_option]] ...    [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]    [WITH {GRANT OPTION | resource_option} ...]GRANT PROXY ON user    TO user [, user] ...    [WITH GRANT OPTION]object_type: {    TABLE  | FUNCTION  | PROCEDURE}priv_level: {    *  | *.*  | db_name.*  | db_name.tbl_name  | tbl_name  | db_name.routine_name}user:    (see Section 6.2.4, “Specifying Account Names”)auth_option: {    IDENTIFIED BY 'auth_string'  | IDENTIFIED WITH auth_plugin  | IDENTIFIED WITH auth_plugin BY 'auth_string'  | IDENTIFIED WITH auth_plugin AS 'auth_string'  | IDENTIFIED BY PASSWORD 'auth_string'}tls_option: {    SSL  | X509  | CIPHER 'cipher'  | ISSUER 'issuer'  | SUBJECT 'subject'}resource_option: {  | MAX_QUERIES_PER_HOUR count  | MAX_UPDATES_PER_HOUR count  | MAX_CONNECTIONS_PER_HOUR count  | MAX_USER_CONNECTIONS count}

其中,部分参数说明如下:

·priv_type:表示为用户赋予的权限类型。

·db_name:表示为用户赋予权限所在的数据库。

·tbl_name:表示为用户赋予权限所在的数据表。

·IDENTIFIED BY:表示为用户设置密码。

·WITH {GRANT OPTION | resource_option}:为用户设置GRANT权限或者资源选项。

·MAX_QUERIES_PER_HOUR count:每小时执行count次查询。

·MAX_UPDATES_PER_HOUR count:每小时执行count次更新。

·MAX_CONNECTIONS_PER_HOUR count:每小时执行count次连接。

·MAX_USER_CONNECTIONS count:每个用户可同时建立count个连接。

(1)创建用户名为binghe的用户,密码为@binghe123456,并为用户赋予所有数据表的查询权限。


mysql> GRANT SELECT ON *.* TO 'zhaoyanfei'@'localhost'    -> IDENTIFIED BY '@zhaoyanfei123456';Query OK, 0 rows affected, 1 warning (0.12 sec)

SQL语句执行成功,此时,用户名为zhaoyanfei的用户具有对所有数据表的查询权限。

(2)创建用户名为zhaoyanfei_database的用户,密码为@zhaoyanfei123456,并为用户赋予Goods数据库的查询和修改权限。


mysql> GRANT SELECT, UPDATE ON goods.* TO 'zhaoyanfei_database'@'localhost'    -> IDENTIFIED BY '@zhaoyanfei123456';Query OK, 0 rows affected, 1 warning (0.10 sec)

结果显示,SQL语句执行成功,此时用户名为zhaoyanfei_database的用户具有对goods数据库的查询和修改权限。

(3)创建用户名为zhaoyanfei_table的用户,密码为@zhaoyanfei123456,并为用户赋予对goods数据库下t_goods数据表的插入、删除、修改和查询权限。


mysql> GRANT INSERT, DELETE, UPDATE, SELECT    -> ON goods.t_goods TO 'zhaoyanfei_table'@'localhost'    -> IDENTIFIED BY '@zhaoyanfei123456';Query OK, 0 rows affected, 1 warning (0.02 sec)

结果显示,SQL语句执行成功。此时,用户名为zhaoyanfei_table的用户具有对goods数据库下的t_goods数据表增、删、改、查的权限。

(4)创建用户名为zhaoyanfei的用户,并指定IP段为192.168.31的主机能够连接MySQL服务。


mysql> GRANT SELECT ON *.* TO 'zhaoyanfei'@'192.168.31.%'    -> IDENTIFIED BY '@zhaoyanfei123456';Query OK, 0 rows affected, 1 warning (0.00 sec)

(5)创建用户名为zhaoyanfei的用户,并指定所有主机能够连接MySQL服务。


mysql> GRANT SELECT ON *.* TO 'zhaoyanfei'@'%'    -> IDENTIFIED BY '@zhaoyanfei123456';Query OK, 0 rows affected, 1 warning (0.00 sec)

  1. 操作user数据表创建用户

MySQL将用户信息保存在mysql数据库下的user数据表中,因此可以直接操作user数据表来为MySQL创建新用户。

例如,向mysql数据库下的user数据表中插入一条用户信息,主机名为localhost,用户名为zhaoyanfei_insert,密码为@zhaoyanfei123456。


mysql> INSERT INTO mysql.user    -> (Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject)    -> VALUES    -> ('localhost', 'zhaoyanfei_insert', password('@zhaoyanfei123456'), '', '', '');Query OK, 1 row affected, 1 warning (0.00 sec)

结果显示,SQL语句执行成功。接下来,查看用户名为zhaoyanfei_insert的用户。


mysql> SELECT host, user, authentication_string FROM mysql.user WHERE user = 'zhaoyanfei_insert';+-----------+---------------+-------------------------------------------+| host      | user          | authentication_string                     |+-----------+---------------+-------------------------------------------+| localhost | zhaoyanfei_insert | *0DEB06AA6E096EB2F26EACEE157143ADB9481B5B |+-----------+---------------+-------------------------------------------+1 row in set (0.00 sec)

结果显示,成功向user数据表中插入了数据。使用zhaoyanfei_insert用户登录MySQL。


[root@binghe151 ~]# mysql -uzhaoyanfei_insert -hlocalhostEnter password:Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 34Server version: 5.7.24 MySQL Community Server (GPL)Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

结果显示,使用zhaoyanfei_insert用户成功登录了MySQL。

来源地址:https://blog.csdn.net/weixin_36754290/article/details/129425147

您可能感兴趣的文档:

--结束END--

本文标题: Mysql 中的三种创建用户的方式

本文链接: https://lsjlt.com/news/384749.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mysql 中的三种创建用户的方式
    创建普通用户 MySQL支持使用CREATE USER语句创建用户,使用GRANT语句创建用户,也可以通过操作mysql数据库下的user数据表来创建用户。 使用CREATE USER语句创建用户 执行CREATE USER语句时,M...
    99+
    2023-08-31
    mysql 创建用户 数据库 Powered by 金山文档
  • mysql 创建索引的三种方式
    1、使用CREATE INDEX创建,语法如下: CREATE INDEX indexName ON tableName (columnName(length)); 2、使用ALTER语句创建,语法如下: ALTER TABLE ...
    99+
    2023-09-07
    mysql
  • MySQL(96)MySQL创建用户(3种方式)
    MySQL创建用户(3种方式) MySQL 在安装时,会默认创建一个名为 root 的用户,该用户拥有超级权限,可以控制整个 MySQL 服务器。 在对 MySQL 的日常管理和操作中,为了避免有人恶意使用 root 用户控制数据库,我们通...
    99+
    2023-09-04
    mysql 数据库
  • 【创建索引的三种方式】
    创建索引的三种方式 第一种方式:在执行 CREATE 第二种方式:使用 ALTER TABLE 命令去增加索 ALTER TABLE table_name ADD INDEX index_name ...
    99+
    2023-09-02
    数据库 mysql sql
  • MySQL数据库——MySQL创建用户(3种方式)
    MySQL 在安装时,会默认创建一个名为 root 的用户,该用户拥有超级权限,可以控制整个 MySQL 服务器。 在对 MySQL 的日常管理和操作中,为了避免有人恶意使用 root 用户控制数据库,我们通常创建一些具有适当权限的用户,尽...
    99+
    2023-09-05
    数据库 mysql 服务器
  • Java线程的三种创建方式
    目录1、Thread2、Runnable和Thread3、Runnable和Thread4、三者对比5、注意项1、Thread 继承Thread类,并重写run方法 class ...
    99+
    2024-04-02
  • MySQL中创建表的三种方法汇总
    目录CREATE TABLECREATE TABLE … LIKECREATE TABLE … SELECT总结SQL 标准使用 CREATE TABLE 语句创建数据表;mysql ...
    99+
    2023-02-18
    MySQL创建表 MySQL创建表的方法 MySQL表创建
  • mysql中根据已有的表来创建新表的三种方式
    mysql根据现有表创建新表 1、语法1:CREATE TABLE new_tbl LIKE orig_tbl; 1、1 根据departments表创建新表departments1 departme...
    99+
    2023-09-06
    mysql 数据库
  • 关于MySQL中创建表的三种方法分享
    本文主要介绍了MySQL中创建表的三种方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 SQL 标准使用 CREATE TABLE 语句创建数据表;MySQL 则实现了三种创建表的方法,支持自定义...
    99+
    2023-10-10
    mysql android 数据库
  • MySQL几种创建索引的方式
    一、创建表时创建索引 key 索引名 (column); 二、表创建好后创建索引 通过Alter创建索引 ①PRIMARY  KEY(主键索引)         mysql > ALTER  TABLE  `table_name`  A...
    99+
    2023-09-01
    mysql
  • eclipse创建springboot项目的三种方式总结
    目录方法一安装STS插件新建spring boot项目项目启动方法二1.创建Maven项目2.选择项目类型3.选择项目4.编写项目组和名称-finish即可5.修改pom.xml文件...
    99+
    2024-04-02
  • Java创建List 的三种方法
    通过 new ArrayList()  List 名称 = new ArrayList();EG: List stringList = new ArrayList();// 这种方法就是用add来添加 .add(类型的数据)// 拿到方法...
    99+
    2023-09-21
    java
  • JavaScript中创建对象的三种方式分别是什么
    JavaScript中创建对象的三种方式分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Javascript中的一切几乎都是对象,...
    99+
    2024-04-02
  • Spring Boot 教程之创建项目的三种方式
    目录一、前言二、Spring Boot 简介三、如何创建 Spring Boot 项目在线创建IntelliJ IDEA 创建Maven 创建四、常见项目结构代码层资源文件结构五、@...
    99+
    2024-04-02
  • Linux下创建进程的三种方式及特点
    一、fork()函数 fork()函数是Linux最常见的创建进程的方式,在调用fork()函数后,系统会为新进程分配资源,例如内存空间,然后复制父进程的全部资源到子进程中,因此新进程和父进程几乎完全一样。此函数的特点是子进程是父进程...
    99+
    2023-10-29
    三种 进程 方式
  • Android中AlertDialog的六种创建方式
     创建AlertDialog的步骤:   1、创建AlertDialog.Builder对象   2、调用Builder对象的setTitle方法设置标题,set...
    99+
    2022-06-06
    alertdialog Android
  • mysql创建视图的方式有哪几种
    在MySQL中,创建视图的方式有以下几种: 使用 CREATE VIEW 语句:可以使用 CREATE VIEW 语句来创建视图,...
    99+
    2024-05-21
    mysql
  • mysql创建只读用户的方法
    小编给大家分享一下mysql创建只读用户的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql增加只读用户的方法:1、使用现有的root用户登录到Mysql;2、创建用户,并授权SEL...
    99+
    2024-04-02
  • mysql登录创建用户的方法
    这篇文章主要介绍mysql登录创建用户的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql登录创建用户的方法:1、使用root帐户登陆mysql,代码为【mysql -ur...
    99+
    2024-04-02
  • Java中创建对象的6种方式
    目录背景创建对象的 6 种方式方法1:new 一个对象方法2:克隆一个对象方法3:类派发一个对象(反射)方法4:动态加载一个对象(反射)方法5:构造一个对象(反射)方法6:反序列化一...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作