MySQL 用户管理
MySQL 的用户账号信息存储在 mysql
数据库中。一般不推荐直接访问 mysql
数据库,因为对它们的任何毁坏都可能严重地伤害到 MySQL 服务器。需要直接访问它的时机之一是在需要获得所有用户账号列表时:
USE mysql; SELECT user, password FROM user;
MySQL 为用户专门提供了账号管理相关的 SQL 语句,接下来我们来看看它们的使用方法。
用户账号管理
1. 创建用户账号
创建一个新的用户账号,可以使用 CREATE USER
语句。例如,在创建新用户账号时指定用户名、密码和允许连接的主机地址:
CREATE USER 'jochen'@'localhost' IDENTIFIED BY 'password';
主机地址 HOST 允许以下几种类型:
localhost
:只允许该用户在本地登录,不能远程登录;192.168.1.1
:具体的 IP 表示只允许该用户从特定 IP 登录;%
:允许在除本机之外的任何一台机器远程登录。
2. 用户重命名
为了重新命名一个用户账号,可以使用 RENAME USER
语句:
RENAME USER finley TO jochen;
3. 更改用户密码
为了更改用户密码,可以使用 SET PASSWORD
语句,同时密码必须使用 Password
函数进行加密:
SET PASSWORD FOR jochen = Password('$mysql$');
4. 更改主机地址
USE mysql; UPDATE user SET host = '%' where user ='jochen'; FLUSH privileges;
5. 删除用户账号
为了删除一个用户账号以及相关的权限信息,可以使用 DROP USER
语句:
DROP USER jochen;
访问权限管理
1. 查看用户权限
在创建用户账号之后,必须给用户分配相应的访问权限。新创建的用户账号如果没有设置权限信息,该账号用户允许登录 MySQL 系统,但不能看到数据,不能执行任何数据库操作。查看用户账号的权限,可以使用 SHOW GRANTS
语句:
SHOW GRANTS FOR jochen;
2. 设置用户权限
为设置权限,使用 GRANT
语句,同时必须提供以下信息:
- 要授予的权限;
- 被授予访问权限的数据库或表;
- 用户名。
// 允许用户在 bankaccount 数据库的所有表上使用 SELECT 语句 GRANT SELECT ON bankaccount.* TO jochen; // 授予用户多个权限,同时可以修改允许连接的主机地址 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON bankaccount.* TO 'jochen'@'localhost'; // 授予用户对所有数据库和表的所有权限,同时允许用户修改权限(相当于 root 用户) GRANT ALL PRIVILEGES ON *.* TO 'jochen'@'localhost' WITH GRANT OPTION;
3. 撤销用户权限
使用 GRANT
语句来设置用户的访问权限,而 REVOKE
语句可以撤销特定的用户权限:
REVOKE SELECT ON bankaccount.* FROM jochen;用户访问权限必须存在,否则 MySQL 会报错。
4. 常见权限说明
权限 | 说明 |
---|---|
ALL | 除 GRANT OPTION 外的所有权限 |
ALTER | 使用 ALTER TABLE 语句 |
CREATE | 使用 CREATE TABLE 语句 |
CREATE USER | 使用 CREATE USER 、DROP USER 、RENAME USER 、CREATE USER 、REVOKE ALL PRIVILEGES 语句 |
DELETE | 使用 DELETE 语句 |
DROP | 使用 DROP TABLE 语句 |
INSERT | 使用 INSERT 语句 |
SELECT | 使用 SELECT 语句 |
UPDATE | 使用 UPDATE 语句 |
USAGE | 无访问权限 |
相关推荐
CoderToy 2020-11-16
bianruifeng 2020-11-16
云中舞步 2020-11-12
敏敏张 2020-11-11
暗夜之城 2020-11-11
好记忆也需烂 2020-11-11
Coder技术文摘 2020-09-29
huacuilaifa 2020-10-29
Gexrior 2020-10-22
lpfvip00 2020-10-07
云中舞步 2020-09-11
康慧欣 2020-09-10
emmm00 2020-11-17
世樹 2020-11-11
tufeiax 2020-09-03
疯狂老司机 2020-09-08
王艺强 2020-11-17
ribavnu 2020-11-16