第12章 MySQL用户和权限管理
MySQL账户管理
练习1:查看mysql数据库中的权限表
使用putty连接ubuntu服务器。输入以下命令查看mySQL中的权限表。
root@mySQL1:~# mysql -u root -p
Enter password:
mysql> use mysql;
mysql> show tables;
练习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;
最好不要删除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;
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;
2. 验证授权
再打开Putty,使用root连接,登录mySQL使用webuser@localhost,验证权限。
字符集设置为UTF-8
使用webuser连接mysql
更改数据库,查询Tstudent表,可以看到能查询
更改姓名遭到失败
mysql> update TStudent set Sname='zhang' where StudentID='00010';
更改班级成功
mysql> update TStudent set Class='NET' where StudentID='00010';
插入记录和删除记录都被拒绝
这足以证明授权成功。
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> create table webTB (sid int,sname varchar(10));
删除现有表,遭到拒绝
mysql> drop table TScore;
4. 授予数据权限
在root@localhost打开的窗口。执行以下命令。
授权'webuser'@'localhost'用户能够对数据库schoolDB完全控制。
mysql> grant all privileges on schoolDB.* to 'webuser'@'localhost';
mysql> flush privileges;
5. 验证数据库权限
在webuser@localhost登录,退出,重新登录。
可以创建表
可以删除表
创建数据库失败
mysql> create database webdb1;
6. 授予全局权限
在root@localhost登录的窗口,授予webuser@localhost为mysql数据库所有权限,即mySQL管理员。
mysql> grant all privileges on *.* to 'webuser'@'localhost';
mysql> flush privileges;
插入一条记录,拒绝。
7. 验证全局权限
在webuser@localhost打开的窗口。
退出,重新登录mySQL,创建数据库,能够成功。
练习4:查看授予的权限
使用root@localhost连接mySQL,查看授予的权限。
mysql> show grants for 'webuser'@'localhost';
练习5:取消授权
取消授予的权限
mysql> revoke update(Email,Class) on schoolDB.TStudent from 'webuser'@'localhost';
mysql> flush privileges;
再次查看权限,发现该用户的权限只剩下两条。
mysql> flush privileges;
mysql> show grants for 'webuser'@'localhost';
练习:6:使用图形界面查看设置的权限
使用mySQL Manager连接,可以创建用户,授权全局权限,表权限,列权限。
练习7:恢复root密码
忘记了root密码,可以更改配置文件,在[mysqld]段中加入一行“skip-grant-tables”,重启mySQL服务,可以使用root账号空密码登录mySQL。
sudo vi /etc/mysql/my.cnf
重启mySQL服务
root@ubuntuServer:~# /etc/init.d/mysql restart
再次登录不需要输入密码。
重设密码
mysql> use mysql;
mysql> update user set password=PASSWORD('123') where user='root';
编辑配置文件
注释掉
skip-grant-tables
重启mySQL服务
root@ubuntuServer:~# /etc/init.d/mysql restart
使用新密码登录
广告