韩顺平 零基础30天学会Java
Mysql 用户管理
- 原因:当我们做项目开发时,可以根据不同的开发人员,赋给他相应的 Mysql 操作权限。所以 Mysql 数据库管理人员(root),根据需要创建不同的用户,赋给相应的权限,供人员使用。
- 不同的数据库用户,登录到DBMS后,根据相应的权限 ,可以操作的数据库和数据对象(表,视图,触发器)都不一样。
1、Mysql用户
- mysql中的用户,都存储在系统数据库mysql中user表中
其中user表中的重要字段说明:
1、host:允许登录的“位置”,localhost表示该用户只允许本机登录,也可以指定ip地址
2、user:用户名
3、authentication_string:密码,是通过mysql的password()函数加密之后的密码。
2、常用命令
1、创建用户
create user '用户名'@'允许登录位置' identified by '密码';
# 说明:创建用户,同时指定密码
2、删除用户
DROP USER '用户名'@'允许登录位置';
3、用户修改密码
# 修改自己的密码
SET PASSWORD = PASSWORD('密码');
# 修改他人密码(需要有修改用户密码的权限)
SET PASSWORD FOR '用户名'@'登录位置'=PASSWORD('密码');
Mysql权限管理
1、给用户授权
基本语法
GRANT 权限列表 ON 库.对象名 TO '用户名'@'登录位置' [IDENTIFIED BY '密码']
说明
1、权限列表,多个权限使用逗号隔开
GRANT SELECT ON ...... # 给用户分配查询的权限
GRANT SELECT,DELETE,CREATE ON ...... # 给用户分配查询、删除、创建的权限
GRANT ALL [PRIVILEGES] ON ...... # 赋予该用户在该对象上的所有权限
2、特别说明
*.*
:代表本系统中所有数据库的而所有对象(表、视图、存储过程)- 库.*:表示某个数据库中的所有数据对象(表、视图、存储过程等)
3、identified by可以省略,也可以写出
- 如果用户存在,就是修改用户的密码
- 如果用户不存在,就是创建该用户
2、回收用户授权
基本语法
REVOKE 权限列表 ON 库.对象名 FROM '用户名'@'登录位置';
3、权限生效指令
如果权限没有生效,可以执行面命令
基本语法
FLUSH PRIVILEGES;
4、练习题
# 1、创建一个用户,密码为123 并且只可以从本地登录,不让远程登录mysql
# 2、创建库和表testdb下的news表,要求:使用root用户创建
# 3、给用户分配查看news表和添加数据的权限
# 4、测试看看用户是否只有这几个权限
# 5、使用root用户删除你的用户
1、创建一个用户,密码为123 并且只可以从本地登录,不让远程登录mysql
-- 1、创建一个用户,密码为123 并且只可以从本地登录,不让远程登录mysql
CREATE USER 'yi'@'localhost' IDENTIFIED BY '123';
此时重新打开一个会话,使用刚刚创建的用户登录
此时该用户只能看到系统默认的数据库
2、创建库和表testdb下的news表,要求:使用root用户创建
-- 2、创建库和表testdb下的news表,要求:使用root用户创建
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE news(
id INT,
`name` VARCHAR(32)
);
-- 插入一条记录用以测试
INSERT INTO news VALUES(100,'北京新闻');
SELECT* FROM news;
3、给用户分配查看news表和添加数据的权限
-- 3、给用户分配查看news表和添加数据的权限
GRANT SELECT,INSERT ON testdb.news TO 'yi'@'localhost';
** 此时当我们去用户 yi 登录的会话中查看的时候,刷新对象浏览器,我们会发现我们可以看到数据库 testdb 以及其下的表 news **
4、测试看看用户是否只有这几个权限(此部分代码是在用户 yi 的会话中写的)
-- 4、测试看看用户是否只有这几个权限
SELECT * FROM news; -- 检查是否有“查看表 news” 的权限
INSERT INTO news VALUES(200,'上海新闻'); -- 检查是否有“添加数据”的权限
SELECT * FROM news;
DELETE FROM news WHERE id=100; -- 检查是否有删除功能
5、使用root用户删除你的用户
-- 5、使用root用户删除你的用户
DROP USER 'yi'@'localhost';
Mysql管理细节
- 在创建用户的时候如果不指定Host则为%,%表示所有IP都有链接权限 create user xxx;
- 你也可以这样指定 CREATE USER ‘xxx’@‘192.168.1.%’ 表示xxx用户在192.168.1.* 的IP可以登录mysql
- 在删除用户的时候,如果host不是%,需要明确指定 ‘用户’@‘host值’