求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
 


AI 智能化软件测试方法与实践
5月23-24日 上海+在线



人工智能.机器学习TensorFlow
5月22-23日 北京



图数据库与知识图谱
5月22-23日 北京
 
 

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创建用户
660 次浏览
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元





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



660 次浏览
4次
 捐助