求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 

mysql教程
MySQL快速学习入门
MySQL是什么
MySQL安装
MySQL示例数据库
MySQL导入示例数据库
MySQL基础教程
MySQL查询数据
MySQL WHERE语句
MySQL插入数据
MySQL更新表数据
MySQL删除表数据
MySQL创建与删除数据库
MySQL创建表
MySQL修改表结构
MySQL重命名表
MySQL数据类型
高级部分
MySQL技巧
MySQL存储过程
MySQL视图
MySQL触发器
MySQL管理
MySQL全文搜索
MySQL函数
应用程序连接
MySQL+Node.js连接和操作
Python+MySQL连接和操作
 
 

MySQL创建用户
641 次浏览
4次  

在本教程中,您将学习如何使用MySQL的CREATE USER语句在MySQL中创建一个用户帐户。

MySQL中的用户帐户简介

在MySQL中,不仅可以指定谁可以连接到数据库服务器,还可以指定用户连接的主机。因此,MySQL中的用户帐号由用户名,以及使用@字符分隔的主机名组成。

例如,如果admin用户从localhost主机连接到MySQL数据库服务器,则用户帐户是书写形式是:admin@localhost,其中@符号是一个固定的分隔符。

admin用户只能从本地主机(localhost)连接到MySQL数据库服务器,而不是远程主机(如:yiibai.com),这使得MySQL数据库服务器更加安全。

注意:如要限制admin用户只能从yiibai.com主机登录,那么可以书写为:admin@yiibai.com , 如果想要允许从任意主机登录,那么可以书写为:admin@%。

此外,通过组合用户名和主机,可以设置多个具有相同名称的帐户,但可以从具有不同权限的不同主机进行连接。

MySQL将用户帐户授权存储在mysql数据库的user表中。

使用MySQL CREATE USER语句创建用户帐户

MySQL提供了CREATE USER语句,允许您创建一个新的用户帐户。 CREATE USER语句的语法如下:

CREATE USER user_account IDENTIFIED BY password;

用户帐号(user_account)是以username@hostname格式跟在CREATE USER子句之后。

密码(password)在IDENTIFIED BY子句中指定。password必须是明文。 在将用户帐户保存到用户表之前,MySQL将加密明文密码。

例如,要创建一个新的用户dbadmin,这个用户只允许从localhost主机并使用密码为pwd123连接到MySQL数据库服务器,使用CREATE USER语句,如下所示:

CREATE USER dbadmin@localhost
IDENTIFIED BY 'pwd123';

如果用户dbadmin还可以从IP为192.168.1.100的主机连接到MySQL数据库服务器,使用CREATE USER语句,如下所示:

CREATE USER dbadmin@192.168.1.100
IDENTIFIED BY 'pwd123';

要查看用户帐户的权限,请使用SHOW GRANTS语句,如下所示:

SHOW GRANTS FOR dbadmin@localhost;

执行上面查询语句,得到以下结果 -

mysql> SHOW GRANTS FOR dbadmin@localhost;
+---------------------------------------------+
| Grants for dbadmin@localhost |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'dbadmin'@'localhost' |
+---------------------------------------------+
1 row in set

上面结果中的*.*显示dbadmin用户帐户只能登录到数据库服务器,没有其他权限。 要授予用户权限,您可以使用GRANT语句,有关Grant语句,我们将在下一个教程中介绍。

请注意,点(.)之前的部分表示数据库,点(.)后面的部分表示表,例如database.table,testdb.offices等等。

要允许用户帐户从任何主机连接,请使用百分比(%)通配符,如以下示例所示:

CREATE USER superadmin@'%' IDENTIFIED BY 'mypassword';

百分比通配符%与LIKE运算符中使用的效果相同,例如,要允许mysqladmin用户帐户从yiibai.com主机的任何子域连接到数据库服务器,请使用百分比通配符%,如下所示:

CREATE USER mysqladmin@'%.yiibai.com'
IDENTIFIED by 'mypassword';

请注意,也可以在CREATE USER语句中使用下划线通配符_。

如果您省略了用户帐户的主机名部分,MySQL也会接受它,并允许用户从任何主机进行连接。 例如,以下语句创建一个名为remote_user的新用户帐户,可以从任何主机连接到数据库服务器:

CREATE USER remote_user;

可以看到授予远程用户帐户(remote_user)的权限如下:

SHOW GRANTS FOR remote_user;

执行上面查询语句,得到以下结果 -

mysql> SHOW GRANTS FOR remote_user;
+-----------------------------------------+
| Grants for remote_user@% |
+-----------------------------------------+
| GRANT USAGE ON *.* TO 'remote_user'@'%' |
+-----------------------------------------+
1 row in set

要注意,引用是非常重要的,特别是当用户帐户包含特殊字符(如_或%)时。

如果您不小心引用"username@hostname"这样的用户帐户,MySQL将创建一个username@hostname的用户,并允许用户从任何主机进行连接,这可能不是您预期的。

例如,以下语句创建可以从任何主机连接到MySQL数据库服务器的新用户api@localhost(这是用户名,并非用户账号)。

-- 常用创建用户为:CREATE USER api@'localhost' 与下面语句不同 -

-- 常用创建用户为:CREATE USER api@'localhost' 与下面语句不同 -
CREATE USER 'api@localhost';

查看上面创建的用户的权限 -

mysql> SHOW GRANTS FOR 'api@localhost';
+-------------------------------------------+
| Grants for api@localhost@% |
+-------------------------------------------+
| GRANT USAGE ON *.* TO 'api@localhost'@'%' |
+-------------------------------------------+
1 row in set

如果创建一个已经存在的用户,MySQL会发出一个错误。 例如,以下语句创建一个名为remote_user的用户帐户已经存在:

CREATE USER remote_user;

上面语句执行后,MySQL发出以下错误信息:

1396 - Operation CREATE USER failed for 'remote_user'@'%'

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


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



641 次浏览
4次
 捐助