MySQL-用户与权限

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

posted @ 2020-03-16 09:16  Kerwin_chyl  阅读(305)  评论(0编辑  收藏  举报