目录
1.创建用户
1)概述
-
由于MySQL中所有用户的信息都保存在mysql.user表中。
-
创建用户可以直接利用root用户登录MySQL服务器后,向mysql.user表中插入记录,但是在开发中为保证数据的安全,并不推荐使用此方式创建用户。
-
采用MySQL提供的CREATE USER语句创建用户。
-
采用MySQL提供的GRANT语句创建用户,在讲解权限时讲解。
-
使用CREATE USER语句每创建一个新用户,都会在mysql.user表中添加一条记录,同时服务器会自动修改相应的授权表。
-
该语句创建的新用户默认情况下没有任何权限,需要使用GRANT进行授权。
语法:
CREATE USER [IF NOT EXISTS]
账户名 [用户身份验证选项][, 账户名 [用户身份验证选项]]…
[WITH 资源控制选项][密码管理选项 | 账户锁定选项]
-
CREATE USER可以一次创建多个用户,多个用户之间使用逗号分隔。
-
账户名是由“用户名@主机地址”组成。
-
其余选项在创建用户时,若未设置则使用默认值。
-
用户名的设置不能超过32个字符,且区分大小写,但是主机地址不区分大小写。
CREATE USER语句选项的默认值:
-
用户身份验证选项:由default_authentication_plugin系统变量定义的插件进行身份验证
-
加密连接协议选项:NONE
-
资源控制选项:N(表示无限制)
-
密码管理选项:PASSWORD EXPIRE DEFAULT
-
用户锁定选项:ACCOUNT UNLOCK
用户身份验证选项的设置仅适用于其前面的用户名,可将其理解为某个用户的私有属性。
其余的选项对声明中的所有用户都有效,可以将其理解为全局属性。
2)创建最简单的用户
CREATE USER 'test1';
查看用户是否已创建
SELECT host, user FROM mysql.user;
在创建用户时,若不指定主机地址、密码以及相关的用户选项,则表示此用户在访问MySQL服务器时,不限定客户端、不需要密码并且没有任何限制。
host的值为“%”表示任何主机,其值为localhost时,表本地主机,其值为空字符串(‘’)时,表示所有客户端。
用户名和主机名在设置时,若不包含空格、“-”等特殊字符,则可以省略引号。
当创建的用户名称为空字符串('')时,表示创建的是一个匿名用户,即登录MySQL服务器时不需要输入用户名和密码,这种操作会给MySQL服务器带来极大的安全隐患,因此不推荐用户创建并使用匿名用户操作MySQL服务器。
3)创建含有密码的用户
CREATE USER 'test2'@'localhost' IDENTIFIED BY '123456';
查看用户的密码