本次博客带领大家学习mysql数据库中的用户管理。
MySQL用户
- mysql中的用户,都存储在系统数据库中的user表中。
- 其中user表的重要字段说明:
- host:允许登录的"位置",localhost表示该用户只允许本机登录,也可以指定ip地址,比如:192.168.1.100。
- user:用户名。
- authentication_string:密码,是通过mysql的password()函数加密之后的密码。
创建用户
- create user ‘用户名’ @‘允许登录位置’ identified by ‘密码’;
说明:创建用户,同时指定密码。
删除用户
- drop user ‘用户名’ @‘允许登录位置’;
-- mysql用户的管理
-- 原因:当我们做项目开发时,可以根据不同的开发人员,赋给他相应的mysql操作权限。
-- 所以,mysql数据库管理人员(root),根据需要创建不同的用户,赋给相应的权限,供开发人员使用
-- 1. 创建新的用户
CREATE USER 'ld' @'localhost' IDENTIFIED BY '123456';
SELECT * FROM USER;
-- 2. 删除用户
DROP USER 'ld' @'localhost'
用户修改密码
- 修改自己的密码:
set password = password (‘密码’);
- 修改他人的密码(需要有修改用户密码权限):
set password for ‘用户名’ @‘登录位置’ = password(‘密码’);
mysql中的权限
给用户授权
-
基本语法:grant 权限列表 on 库.对象名 to ‘用户名’ @‘允许登录位置’ [identified by ‘密码’]
-
说明:
-
权限列表,多个权限用逗号分开:
grant select on…
grant select,delete,create on…
grant all [privileges] on … //表示赋予该用户在该对象上的所有权限。
-
特别说明:
*.*:代表本系统中的所有数据库的所有对象(表,视图,存储过程等)。
库.*:表示某个数据库中的所有数据对象(表,视图,存储过程等)。
-
identified by可以省略,也可以写出:
- 如果用户存在,就是修改该用户的密码。
- 如果该用户不存在,就是创建该用户!
-
回收用户权限
- 基本语法:revoke 权限列表 on 库.对象名 from ‘用户名’@‘登录位置’;
权限生效指令
如果权限没有生效,可以执行下面命令:
- 基本语法:FLUSH PRIVILEGES;
用户管理练习
- 创建一个用户(你的名字,拼音),密码是123,并且只可以从本地登录,不让远程登录mysql。
- 创建库和表 testdb 下的 news表,要求:使用root用户创建。
- 给用户分配查看 news 表和添加数据的权限。
- 修改密码为abc,要求:使用root用户完成,并回收所有权限。
- 使用root用户删除你的用户。
-- 1.
CREATE USER 'lidong'@'localhost' IDENTIFIED BY '123';
-- 2.
CREATE DATABASE testdb;
CREATE TABLE news (
id INT,
content VARCHAR(32));
INSERT INTO news VALUES(100,'广州新闻');
SELECT * FROM news;
-- 3.
GRANT SELECT , INSERT
ON testdb.news
TO 'lidong'@'localhost'
-- 4.
SET PASSWORD FOR 'lidong'@'localhost' = PASSWORD('adc');
-- 回收 lidong 用户在 testdb.news 表的所有权限
REVOKE SELECT ,UPDATE,INSERT ON testdb.news FROM 'lidong'@'localhost';
-- 5.
DROP USER 'lidong'@'localhost';
细节说明
- 在创建用户的时候,如果不指定Host,则为%,%表示所有IP都有连接的权限 create user xxx。
- 你也可以这样指定 create user ‘xxx’@‘192.168.1.%’ 表示 xxx用户在 192.168.1.*的ip可以登录mysql。
- 在删除用户的时候,如果host不是%,需要明确指定 ‘用户’@‘host值’。