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  阅读(383)  评论(0)    收藏  举报