用户和数据权限管理
用户要访问MySQL数据库,首先必须拥有登录到MySQL服务器的用户名和口令。
登录到服务器后,MySQL允许用户在其权限内使用数据库资源。
MySQL允许用户以多种不同的方式创建和设置权限。
MySQL的用户信息存储在MySQL自带的mysql数据库的user表中。
添加和删除用户
一、 使用CREATE USER 或者 GRANT语句 (推荐)
二、 直接操作MySQL数据库
一、添加用户
使用CREATE USER语句可以添加一个或多个用户,并设置相应的密码
语法:
CREATE USER <用户名> [IDENTIFIED] BY [PASSWORD] '密码'
<用户名>:
创建用户账号,格式为 'user_name'@'host_name' user_name为用户名 host_name为主机名
创建时只给定了用户名,没有指定主机名 则主机默认为 % 表示一组主机
PASSWORD:可选 指定散列口令,若使用明文设置口令,则忽略PASSWORD关键字
若不想以明文设置口令,且知道 PASSWORD() 函数返回给密码的散列值,则可以在口令设置语句中指定此散列值,但需要加上关键字PASSWORD
[IDENTIFIED] BY:
指定用户账号对应的口令,若该用户账号无口令,则可省略此子句
完整语法:
CREATE USER user_specification [,user_specification] ...
user@host[
IDENTIFIED BY [PASSWORD] 'password' | IDENTIFIED WITH auth_plugin [ AS 'auth_string']
]
user表创建的用户的名称
host 表示允许登录的用户主机名称
IDENTIFIED BY 表示用来设置用户的密码
[PASSWORD] 表示使用哈希值设置密码 参数可选
'password' 表示用户登录时使用的普通明文密码
实例:添加一个新的用户usr1,密码为123456
mysql>CREATE USER usr1@localhost IDENTIFIED BY '123456';
如果没有输入密码,那么MySQL允许相关的用户不使用密码登录。
但是从安全的角度并不推荐这种做法。
实例:使用CREATE USER 创建一个用户 名为jeffrey 密码 mypass 主机名localhost
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
如果只指定用户名部分 'jeffrey' 主机名部分则默认为 % (对所有主机开放权限)
如果指定用户登录时不需要密码 可以省略 IDENTIFIED BY部分
CREATE USER 'jeffrey'@'localhost';
如果要创建指定密码的用户,需要IDENTIFIED BY指定明文密码值;
为了避免明文密码,如果知道密码的散列值,可以通过PASSWORD关键字使用密码的哈希值设置密码.
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY PASSWORD ' *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4';
二、删除用户
DROP USER语句用于删除一个或多个MySQL账户,并取消其权限
语法:DROP USER 用户名1 [,用户名2]...
说明:要使用DROP USER语句,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限
实例:删除用户usr1
DROP USER usr1@localhost;
注意:如果删除的用户已经创建了表、索引或其他数据库对象,它们将继续保留,因为MySQL并没有记录是谁创建了这些对象。