您的位置:首页 > 数据库 > MySQL

mysql管理之安全机制

2016-11-23 15:53 483 查看

Mysql权限表 >> 初始化过后产生的mysql库

Mysql.user表 非常重要
一、用户字段二、权限字段三、安全字段四、资源控制字段
Mysql.db mysql.hsot
用户字段
权限字段

Mysql.tables_priv
Mysql.columms_priv
Procs_priv

Mysql用户管理

登录和退出mysql
实例:
Mysql -h 192.168.5.240 -P 3306 -uroot -p123 mysql -e ‘select user,host from user’

-h 主机名
-P 服务器端口
-u 用户名
-p 密码
-e 连接sql语句

\s获取当前服务器状态信息
Quit退出登录

创建用户
方法一create user语句创建
实例:create user user1@’localhost’ identified by ‘123456’;

方法二insert语句创建 不常用
实例:insert into mysql.user(user,host,password,ssl_cipher,x509_issuer,x509_subject)
Values (‘user2’,’localhost’,’password(‘123456’),’’,’’);
Flush privileges;

方法三grant语句创建 //同时授权,最常用

实例:Grant select on ‘*’ to user3@ ‘localhost’ identitied by ‘123456’;
Flush privileges;

删除用户
方法一drop user语句删除
Drop user user1@’localhost’;

方法二delect语句删除
Delect from mysql.user where user=’user2’ and host=’localhsot’;
Flush privileges;

修改用户密码(root修改自己密码)
方法一
Mysqladmin -u root -p password ‘new password’ //将提示输入旧密码

方法二
Update mysql.user set password=password(‘new password’) where user=’root’ and host=’localhost’;
Flush privileges;

方法三
Set password=password(‘new password’);
Flush privileges;

Root修改其他用户密码
方法一
Set password for user3@’localhost’ =password(‘new_password’);
Flush privileges;

方法二
Update mysql.user set password=password(‘new passowrd’) where user=’user3’ and host=’localhost’;
Flush privileges;

方法三
Grant select on ‘*’ to user3@’localhost’ identified by ‘tianyun’;
Flush privileges;

普通用户修改自己密码
Set password=password(‘new passowrd’);
丢失root用户密码
Vim /etc/my.cnf
Skip-grant-tables //增加这一句表示跳过授权表也就是跳过密码验证

保存退出
Service mysqld restart //重启mysq服务器

Mysql -uroot
Update mysql.user set password=password(‘new password’) where user=’root’ and host=’localhost’;
Flush privileges;

Mysql权限管理

权限应用的顺序:

user(Y/N)==>DB==>tables_priv==>colums_priv

语法格式

grant 权限列表 on 库名.表名 to 用户名@'客户端主机' [identified by '密码' with grant option]
1)权限列表 all 所有权限(不包括授权权限)
select update
2)库名.表名 *.* 所有数据库
数据库.* 指定数据库下的所数据对象 最常用
数据库名称.表名称 指定数据库的指定表
3)客户端主机
对象列表(为谁赋值了上面的增删改查的这些权限)
% 所有主机
192.168.2.% 192.168.2.段的主机
192.168.2.8 指定主机

4)With_option参数
Grant option 授权选项
Max_queries_per_hour; 定义每小时允许查询的查询数
Max_updates_per_hour; 定义每小时允许更新的查询数
Max_connections_per_hour; 定义每小时可以建立的连接数
Max_user_connections; 定义单个用户同时可以建立的连接数

实例:把pro这个数据库下的所有权限都给了李四
Grant all on pro.* to lisi@localhost; //db级的
Grant all on *.* to admin1@`%` identified by ‘tianyun’; //全局
Grant all on pro.* to admin2@`%` identified by ‘tianyun’ with grant option; //增加这个用户的授权权限
Grant all on bbs.user to admin4@’% ’ identified by ‘tianyun’ //表级
Grant select (col1),insert(col2,col3) on bbs.user to admin@’%’ identified by ‘tianyun’; //列级别

查看权限:show grants for 用户名@客户端主机名 \g
实例 show grants for admin1@’%’ \G

删除收回权限
Revoke 权限列表 on 对象列表 from 用户列表
Revoke all on pro.* from lisi@localhost; //回收所有权限
Revoke delete on pro.* from lisi@localhost; //回收部分权限

注意:在日常管理中在删除用户之前应该是先删除该用户所有权限,再删除该用户,不然以后如果再创建相同的用户的话权限就还是存在的,这是不可以的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 安全 权限