第12章 MySQL用户和权限管理

MySQL账户管理

练习1:查看mysql数据库中的权限表

使用putty连接ubuntu服务器。输入以下命令查看mySQL中的权限表。

root@mySQL1:~# mysql -u root -p

Enter password:

mysql> use mysql;

mysql> show tables;

mySQL教程 第12章 MySQL用户和权限管理_第1张图片

练习2:使用命令行创建mySQL用户

本练习你将使用putty连接到Ubuntu服务器,使用mysql工具查看mySQL用户,创建新用户。授予用户权限。在mysql数据库中user表存储了用户和全局权限

1. 查看用户

使用putty连接到UbuntuServer

root@ubuntuServer:~# mysql -u root -p

Enter password:

mysql> use mysql;

mysql> select user,host from user;

mySQL教程 第12章 MySQL用户和权限管理_第2张图片

最好不要删除127.0.0.1和localhost,否则在服务器本地不能连接mySQL。

2. 使用create user创建新用户

使用CREATE USER创建新用户,没有赋予任何权限。

下面创建两个用户webuser,一个允许本地登录,一个允许192.168.80.网段能够登录,注意密码不一样。

mysql> create user 'webuser'@'localhost' identified by 'a1!';

mysql> create user 'webuser'@'192.168.80.%' identified by 'a2!';

创建不需要登录密码的用户,不需要identified by。

3. 使用grant授权用户并创建用户(创建mySQL管理员)

下面使用grant语句创建一个root用户,该用户可以在任何计算机登录,授予所有权限,所有数据库所有表,能够且能够授权。

mysql>grant all privileges on *.* to 'root'@'%' identified by 'a1!' with grant option;

mysql> flush privileges;

mySQL教程 第12章 MySQL用户和权限管理_第3张图片

4. 重设用户密码

将'webuser'@'192.168.80.%'用户密码设置为123456

注意:mySQL用户webuser

mysql> set password for 'webuser'@'192.168.80.%'=password('123456');

练习3:mySQL授权

下面的练习,将会授权练习2创建的用户webuser@localhost对mySQL数据库对象的访问权限,权限由小变大。并验证权限。

MySQL权限级别

全局权限

数据库权限

表权限

列权限

1. 授予列权限

授予用户webuser@localhost能够查询schoolDB数据的所有表,只能更新TStudent表的sname和Email列。

授予用户能够更改数据库schoolDB.TStudent的Email,Class

mysql> grant select on schoolDB.* to 'webuser'@'localhost';

mysql> grant update(Email,Class) on schoolDB.TStudent to 'webuser'@'localhost';

mysql> flush privileges;

mySQL教程 第12章 MySQL用户和权限管理_第4张图片

2. 验证授权

再打开Putty,使用root连接,登录mySQL使用webuser@localhost,验证权限。

字符集设置为UTF-8

mySQL教程 第12章 MySQL用户和权限管理_第5张图片

使用webuser连接mysql

mySQL教程 第12章 MySQL用户和权限管理_第6张图片

更改数据库,查询Tstudent表,可以看到能查询

mySQL教程 第12章 MySQL用户和权限管理_第7张图片

更改姓名遭到失败

mysql> update TStudent set Sname='zhang' where StudentID='00010';

更改班级成功

mysql> update TStudent set Class='NET' where StudentID='00010';

mySQL教程 第12章 MySQL用户和权限管理_第8张图片

插入记录和删除记录都被拒绝

mySQL教程 第12章 MySQL用户和权限管理_第9张图片

这足以证明授权成功。

3. 授予表权限

授权'webuser'@'localhost'用户能够对数据schoolDB中Tstudent能够select,update,delete,insert权限,刷新权限。

mysql> grant select,update,delete,insert on schoolDB.* to 'webuser'@'localhost';

这次不用重新连接,直接验证能够插入成功。

mysql> use schoolDB;

mysql> insert TStudent (StudentID,sname) value ('00012','zhangjing');

mysql> delete from TStudent where studentID='00010';

mySQL教程 第12章 MySQL用户和权限管理_第10张图片

创建一个新的表,遭到拒绝

mysql> create table webTB (sid int,sname varchar(10));

删除现有表,遭到拒绝

mysql> drop table TScore;

mySQL教程 第12章 MySQL用户和权限管理_第11张图片

4. 授予数据权限

在root@localhost打开的窗口。执行以下命令。

授权'webuser'@'localhost'用户能够对数据库schoolDB完全控制。

mysql> grant all privileges on schoolDB.* to 'webuser'@'localhost';

mysql> flush privileges;

mySQL教程 第12章 MySQL用户和权限管理_第12张图片

5. 验证数据库权限

在webuser@localhost登录,退出,重新登录。

可以创建表

可以删除表

mySQL教程 第12章 MySQL用户和权限管理_第13张图片

创建数据库失败

mysql> create database webdb1;

mySQL教程 第12章 MySQL用户和权限管理_第14张图片

6. 授予全局权限

在root@localhost登录的窗口,授予webuser@localhost为mysql数据库所有权限,即mySQL管理员。

mysql> grant all privileges on *.* to 'webuser'@'localhost';

mysql> flush privileges;

mySQL教程 第12章 MySQL用户和权限管理_第15张图片

插入一条记录,拒绝。

7. 验证全局权限

在webuser@localhost打开的窗口。

退出,重新登录mySQL,创建数据库,能够成功。

mySQL教程 第12章 MySQL用户和权限管理_第16张图片

练习4:查看授予的权限

使用root@localhost连接mySQL,查看授予的权限。

mysql> show grants for 'webuser'@'localhost';

mySQL教程 第12章 MySQL用户和权限管理_第17张图片

练习5:取消授权

取消授予的权限

mysql> revoke update(Email,Class) on schoolDB.TStudent from 'webuser'@'localhost';

mysql> flush privileges;

mySQL教程 第12章 MySQL用户和权限管理_第18张图片

再次查看权限,发现该用户的权限只剩下两条。

mysql> flush privileges;

mysql> show grants for 'webuser'@'localhost';

mySQL教程 第12章 MySQL用户和权限管理_第19张图片

练习:6:使用图形界面查看设置的权限

使用mySQL Manager连接,可以创建用户,授权全局权限,表权限,列权限。

mySQL教程 第12章 MySQL用户和权限管理_第20张图片

mySQL教程 第12章 MySQL用户和权限管理_第21张图片

点击下图中clip_image024,可以看到所有用户,全局权限,表权限和列权限。

mySQL教程 第12章 MySQL用户和权限管理_第22张图片

练习7:恢复root密码

忘记了root密码,可以更改配置文件,在[mysqld]段中加入一行“skip-grant-tables”,重启mySQL服务,可以使用root账号空密码登录mySQL。

sudo vi /etc/mysql/my.cnf

mySQL教程 第12章 MySQL用户和权限管理_第23张图片

重启mySQL服务

root@ubuntuServer:~# /etc/init.d/mysql restart

再次登录不需要输入密码。

mySQL教程 第12章 MySQL用户和权限管理_第24张图片

重设密码

mysql> use mysql;

mysql> update user set password=PASSWORD('123') where user='root';

mySQL教程 第12章 MySQL用户和权限管理_第25张图片

编辑配置文件

注释掉

skip-grant-tables

重启mySQL服务

root@ubuntuServer:~# /etc/init.d/mysql restart

使用新密码登录

mySQL教程 第12章 MySQL用户和权限管理_第26张图片

广告

mySQL教程 第12章 MySQL用户和权限管理_第27张图片

mySQL教程 第12章 MySQL用户和权限管理_第28张图片

mySQL教程 第12章 MySQL用户和权限管理_第29张图片

mySQL教程 第12章 MySQL用户和权限管理_第30张图片