在 MySQL 中使用 CREATE USER 语句创建用户

本文介绍了在 MySQL 中如何使用 CREATE USER 语句在数据库服务器中创建新用户。

用户是 MySQL 认证的基本元素。您只能通过正确的用户名和密码登录进 MySQL 数据库,然后授予用户不同的权限,以便让不同的用户可以进行不同的操作。

创建用户是精确控制权限的第一步。

在 MySQL 中,您可以使用 CREATE USER 语句在数据库服务器中创建一个新用户。

MySQL CREATE USER 语法

以下是 CREATE USER 语句的基本语法:

CREATE USER [IF NOT EXISTS] account_name 
IDENTIFIED BY 'password';

在这个语法中:

  • CREATE USER 关键字后指定帐户名称。帐户名称由两部分组成: usernamehostname ,以 @ 符号分隔:

    username@hostname
    

    username 是用户的名称。而 hostname 从用户连接到 MySQL 服务器的主机名。

    hostname 帐户名称的部分是可选的。如果省略它,用户可以从任何主机连接。

    没有主机名的帐户名等效于:

    username@%
    

    如果 usernamehostname 中包含空格或 - 等特殊字符,则需要将用户名和主机名分别按如下方式引用:

    'username'@'hostname'
    

    除了单引号 ('),您还可以使用反引号 (``) 或双引号 (")。

  • IDENTIFIED BY 关键字后指定用户的密码。

  • IF NOT EXISTS 选项仅在新用户不存在时有条件地创建新用户。

请注意, CREATE USER 语句创建了一个没有任何权限的新用户。要向用户授予权限,请使用 GRANT 语句

MySQL CREATE USER 实例

请按照如下步骤执行 MySQL CREATE USER 实例:

  1. 使用 mysql 客户端工具连接到 MySQL 服务器:

    mysql -u root -p
    

    输入 root 帐户的密码并按 Enter

    Enter password: ********
    
  2. 显示来自当前 MySQL 服务器的用户

    SELECT user FROM mysql.user;
    
    +------------------+
    | user             |
    +------------------+
    | root             |
    | test_role1       |
    | test_role2       |
    | testuser         |
    | mysql.infoschema |
    | mysql.session    |
    | mysql.sys        |
    | root             |
    +------------------+
  3. 创建一个名为 sqliz 的新用户:

    CREATE user 'sqliz'@'%' IDENTIFIED by 'SqLiZ9879123!';
    
  4. 再次显示所有用户:

    SELECT user FROM mysql.user;
    
    +------------------+
    | user             |
    +------------------+
    | root             |
    | test_role1       |
    | test_role2       |
    | testuser         |
    | mysql.infoschema |
    | mysql.session    |
    | mysql.sys        |
    | root             |
    | sqliz            |
    +------------------+

    用户 sqliz 已成功创建。

  5. 打开一个新的会话并以 sqliz 用户身份登录 MySQL:

    mysql -u sqliz -p
    

    输入密码 sqliz 并按下 Enter

    Enter password: ********
    
  6. 查看 sqliz 可访问的数据库列表

    SHOW DATABASES;
    

    以下是 sqliz 可以访问的数据库列表:

    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    +--------------------+
  7. 转到用户 root 的会话并创建一个新数据库,名为 sqlizdb

    CREATE DATABASE sqlizdb;
    
  8. 使用 GRANT 语句将数据库 sqlizdb 的所有权限授权给用户 sqliz

    GRANT ALL PRIVILEGES ON sqlizdb.* TO sqliz@'%';
    
  9. 进入 sqliz 的会话,显示数据库:

    SHOW DATABASES;
    

    现在, sqliz 可以看到 sqlizdb

    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | sqlizdb            |
    +--------------------+
  10. 选择数据库 sqlizdb

    USE sqlizdb;
    

    此后, 默认的数据库为: sqlizdb。以后的所有操作都默认在此数据库中进行。

  11. 创建一个新表, 名为 test_table

    CREATE TABLE test_table(
        id int AUTO_INCREMENT PRIMARY KEY,
        txt varchar(100) NOT NULL
    );
    
  12. sqlizdb 数据库中显示表

    SHOW TABLES;
    

    用户 sqliz 可以看到 test_table 表:

    +-------------------+
    | Tables_in_sqlizdb |
    +-------------------+
    | test_table        |
    +-------------------+
  13. 在表 test_table插入一行

    INSERT INTO test_table(txt)
    VALUES('Hello World.');
    
  14. 从表 test_table查询数据

    SELECT * FROM test_table;
    

    这是输出:

    +----+--------------+
    | id | txt          |
    +----+--------------+
    |  1 | Hello World. |
    +----+--------------+

现在, 用户 sqliz 可以在 sqlizdb 数据库中做任何事情。

结论

在本文中,您学习了如何使用 MySQL CREATE USER 在数据库服务器中创建新用户:

  1. 使用有权限的用户创建一个新用户。
  2. 对新创建的用户授予合适的权限。

创建用户后,或许您还想修改用户的密码重命名用户 或者 删除用户