在 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
关键字后指定帐户名称。帐户名称由两部分组成:username
和hostname
,以@
符号分隔:username@hostname
username
是用户的名称。而hostname
从用户连接到 MySQL 服务器的主机名。hostname
帐户名称的部分是可选的。如果省略它,用户可以从任何主机连接。没有主机名的帐户名等效于:
username@%
如果
username
和hostname
中包含空格或-
等特殊字符,则需要将用户名和主机名分别按如下方式引用:'username'@'hostname'
除了单引号 (
'
),您还可以使用反引号 (``
) 或双引号 ("
)。 -
在
IDENTIFIED BY
关键字后指定用户的密码。 -
IF NOT EXISTS
选项仅在新用户不存在时有条件地创建新用户。
请注意, CREATE USER
语句创建了一个没有任何权限的新用户。要向用户授予权限,请使用 GRANT
语句。
MySQL CREATE USER
实例
请按照如下步骤执行 MySQL CREATE USER
实例:
-
使用 mysql 客户端工具连接到 MySQL 服务器:
mysql -u root -p
输入
root
帐户的密码并按Enter
:Enter password: ********
-
显示来自当前 MySQL 服务器的用户:
SELECT user FROM mysql.user;
+------------------+ | user | +------------------+ | root | | test_role1 | | test_role2 | | testuser | | mysql.infoschema | | mysql.session | | mysql.sys | | root | +------------------+
-
创建一个名为
sqliz
的新用户:CREATE user 'sqliz'@'%' IDENTIFIED by 'SqLiZ9879123!';
-
再次显示所有用户:
SELECT user FROM mysql.user;
+------------------+ | user | +------------------+ | root | | test_role1 | | test_role2 | | testuser | | mysql.infoschema | | mysql.session | | mysql.sys | | root | | sqliz | +------------------+
用户
sqliz
已成功创建。 -
打开一个新的会话并以
sqliz
用户身份登录 MySQL:mysql -u sqliz -p
输入密码
sqliz
并按下Enter
:Enter password: ********
-
查看
sqliz
可访问的数据库列表:SHOW DATABASES;
以下是
sqliz
可以访问的数据库列表:+--------------------+ | Database | +--------------------+ | information_schema | +--------------------+
-
转到用户
root
的会话并创建一个新数据库,名为sqlizdb
:CREATE DATABASE sqlizdb;
-
使用
GRANT
语句将数据库sqlizdb
的所有权限授权给用户sqliz
:GRANT ALL PRIVILEGES ON sqlizdb.* TO sqliz@'%';
-
进入 sqliz 的会话,显示数据库:
SHOW DATABASES;
现在,
sqliz
可以看到sqlizdb
:+--------------------+ | Database | +--------------------+ | information_schema | | sqlizdb | +--------------------+
-
选择数据库
sqlizdb
:USE sqlizdb;
此后, 默认的数据库为:
sqlizdb
。以后的所有操作都默认在此数据库中进行。 -
创建一个新表, 名为
test_table
:CREATE TABLE test_table( id int AUTO_INCREMENT PRIMARY KEY, txt varchar(100) NOT NULL );
-
从
sqlizdb
数据库中显示表:SHOW TABLES;
用户
sqliz
可以看到test_table
表:+-------------------+ | Tables_in_sqlizdb | +-------------------+ | test_table | +-------------------+
-
在表
test_table
中插入一行:INSERT INTO test_table(txt) VALUES('Hello World.');
-
从表
test_table
中查询数据:SELECT * FROM test_table;
这是输出:
+----+--------------+ | id | txt | +----+--------------+ | 1 | Hello World. | +----+--------------+
现在, 用户 sqliz
可以在 sqlizdb
数据库中做任何事情。
结论
在本文中,您学习了如何使用 MySQL CREATE USER
在数据库服务器中创建新用户:
- 使用有权限的用户创建一个新用户。
- 对新创建的用户授予合适的权限。