MySQL权限表
MySQL系统对于用户的验证分为两个阶段:
1)对连接的用户进行身份验证,合法的用户通过验证,然后连接。不合法的用户拒绝连接;
2)对通过验证的合法用户赋予相应的权限,用户可以在这些权限范围内对数据库进行相应的操作。
User 表存储用户的主机、账号、密码、全局权限等信息。
在 User 表中,需要我们关注的列 Host、User、Password。
Db 表是对一个数据库的所有操作权限。
Db 表中,需要关注的列 host、db、user
Tables_priv 表:储存用户对某个表的操作权限。
“mysql> flush privileges;”刷新权限
用户管理
1、MySQL登录和退出
登录的语法格式:
Mysql -h主机名/ip 地址 –u用户名 -p密码 数据库名称; |
范例:
C:Users ThinkPad>mysql -h localhost -uroot -proot |
C:Users ThinkPad>mysql -h localhost –uneu01 –pneu01 neusoftl; |
退出的语法格式:
Exit 或 quit 或 \q |
2、创建用户
Root 用户拥有全局权限,以 root 身份登录 MySQL 服务器,然后创建普通用户。
1)使用CREATE USER语句
语法格式:
CREATE USER 用户名 [IDENTIFIED BY ‘密码’]; |
CREATE USER 用户名@’localhost’ [IDENTIFIED BY ‘密码’]; |
范例:
CREATE USER neu01 IDENTIFIED BY ‘neu01’; |
CREATE USER neu02@’localhost’ IDENTIFIED BY ‘neu02’; |
题目:创建管理员用户oldboy能通过10.0.0.0/24网段任意地址登录管理MySQL CREATE USER oldboy@’10.0.0.%’; |
2)使用INSERT语句
通过 INSERT 语句往 mysql.user 表中添加用户信息
范例:
INSERT INTO mysql.USER(host,user,ssl_cipher,x509_issuer,x509_subject) VALUES('localhost','neu03','','',''); //不输入密码 |
INSERT INTO mysql.USER(host,user, PASSWORD,ssl_cipher,x509_issuer,x509_subject) VALUES('localhost','neu04',PASSWORD('123456'),'','',''); //输入密码 //MySQL5.7后,PASSWORD字段名 变更为 authentication_string列存储密码 FLUSH PRIVILEGES; //使用insert into添加用户后,必须使用此命令使添加生效 |
使用FLUSH命令可以从 mysql 数据库中的 user 表中重新加载权限。
3)使用GRANT语句
语法格式:
GRANT 权限 ON 数据库名.表名 TO 用户名 [IDENTIFIED BY ‘密码’]; |
范例:
GRANT SELECT, INSERT,UPDATE ON *.* TO ‘neu04’@’localhost’ IDENTIFIED BY ‘neu04’; |
Grant语句不仅可以创建用户,还可以修改密码、授予权限
3、删除用户
1)用DROP USER 语句来删除普通用户
语法格式:
DROP USER ‘用户名1’@'localhost', ’用户名2’@'localhost',…; |
范例:
DROP USER 'neu02'@'localhost'; |
2)使用DELETE语句来删除普通用户
语法格式:
DELETE FROM mysql.USER WHERE host=’IP地址’ AND USER=’用户名’; |
范例:
DELETE FROM mysql.USER WHERE host=’localhost’ AND USER=’neu02’; |
4、用户的修改
1)修改用户名
RENAME USER 旧名1 TO 新名1,旧名2 TO 新名2,…; |
范例:
RENAME USER ‘neu01’@’localhost’ TO ‘neu00’@’localhost’; |
2)修改用户密码
SET语句
SET PASSWORD FOR '用户名'@'IP地址'=PASSWORD(‘新密码’); |
范例:
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('root'); |
修改当前用户的密码:SET PASSWORD=PASSWORD(‘新密码’);
UPDATE语句
UPDATE mysql.USER SET PASSWORD=PASSWORD('密码') WHERE host=’ IP地址’ AND user=’ 用户名’; |
范例:
UPDATE mysql.USER SET PASSWORD=PASSWORD('root') WHERE host=’localhost’ AND user=’root’; |
mysqladmin命令
可以通过bin文件下的mysqladmin命令来修改密码
Mysqladmin –u用户名 –p旧密码 password 新密码; |
范例:
cd C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin mysqladmin –uroot –proot password 123456; mysqladmin –uneu04 –pneu04 password 123456; |
GRANT 语句
详见上面
Root用户密码遗忘:
解决办法参照http://www.hljzjw.com/web/help/68682.html
权限管理
1、授予权限
GRANT 权限 ON 数据库. 表 TO 用户名 [IDENTIFIED BY PASSWORD ‘密码’]; |
MySQL 权限列表:
权限 |
作用范围 |
作用 |
all |
服务器 |
所有权限 |
select |
表、列 |
选择行 |
insert |
表、列 |
插入行 |
update |
表、列 |
更新行 |
delete |
表 |
删除行 |
create |
数据库、表、索引 |
创建 |
drop |
数据库、表、视图 |
删除 |
reload |
服务器 |
允许使用 flush 语句 |
shutdown |
服务器 |
关闭服务 |
process |
服务器 |
查看线程信息 |
file |
服务器 |
文件操作 |
grant option |
数据库、表、存储过程 |
授权 |
references |
数据库、表 |
外键约束的父表 |
index |
表 |
创建/删除索引 |
alter |
表 |
修改表结构 |
show databases |
服务器 |
查看数据库名称 |
super |
服务器 |
超级权限 |
create temporary tables |
表 |
创建临时表 |
lock tables |
数据库 |
锁表 |
execute |
存储过程 |
执行 |
replication client |
服务器 |
允许查看主/从/二进制日志状态 |
replication slave |
服务器 |
主从复制 |
create view |
视图 |
创建视图 |
show view |
视图 |
查看视图 |
create routine |
存储过程 |
创建存储过程 |
alter routine |
存储过程 |
修改/删除存储过程 |
create user |
服务器 |
创建用户 |
event |
数据库 |
创建/更改/删除/查看事件 |
trigger |
表 |
触发器 |
create tablespace |
服务器 |
创建/更改/删除表空间/日志文件 |
proxy |
服务器 |
代理成为其它用户 |
usage |
服务器(登录) |
没有权限 |
2、查看用户权限
语法:
SHOW GRANTS FOR 用户名; |
SELECT * FROM mysql.user; |
范例:
SHOW GRANTS FOR root@localhost; |
3、回收权限
语法:
REVOKE 权限列表 ON 数据库.表名 FROM 用户; |
范例:
REVOKE INSERT ON neusoft1.emp FROM neu06@localhost; |
REVOKE ALL PRIVILEGES, GRANT OPTION FROM neu06@localhost; //回收全部权限 |
-
用户与权限习题:
题目1:创建应用用户wordpress能通过172.16.1.0/24网段任意地址登录操作wordpress库下的所有表 |
create user wordpress@'172.16.1.%'; grant insert,update,delete,select on wordpress.* to wordpress@'172.16.1.%; |
题目2:创建用户oldboy,使之可以管理数据库oldboy |
create user oldboy@'%';grant all on oldboy.*to oldboy@'%; |
题目3:收回oldboy用户的drop权限 |
revoke drop on oldboy.*from oldboy@'%'; |
题目4:查看创建的用户oldboy拥有哪些权限 |
show grants for oldboy@'%'; |
题目5:删除一个用户名为stu01,主机位任意主机的用户 |
DROP USER 'stu01'@'%'; |
表分区
详见课件
工具的使用
navicat 的使用
powerdesigner
来源:https://www.cnblogs.com/kerwin-chyl/p/12501864.html