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

MySQL用户管理

2015-09-24 14:19 696 查看
一、权限表

默认创建名为mysql的数据库,存储的是每个用户的权限信息

user表

存储每个用户的权限

用户列

Host、User、Password字段

用户基本的登录信息,命令修改密码也是改password字段

权限列

Select_priv、Insert_priv等字段

查询、增删改等权限,以及管理权限

Y表示该权限应用到所有数据库,N则不能应用到所有,默认为N

安全列

ssl_type、ssl_cipher、x509_issuer、x509_subject字段

ssl用于加密,x509标识用户

资源控制列

max_questions、max_updates、max_connections、max_user_connections字段

max_question字段:每小时最大查询

update字段:每小时最大更新

conn字段:每小时建立的最大连接

nuser_conn字段:单个用户最大连接数

db表

存储用户操作数据库的权限

用户列

Host、Db、User字段

权限列

相比user表多了Create_routine_priv、Alter_routine_priv字段,用于创建、修改存储过程

tables_priv表

可对单个表进行权限设置

字段:

Host、Db、User

Table_priv:设置表的权限

Timestamp:修改权限时间

Grantor:指定用户

columns_priv表

对单个数据列进行权限设置

字段:

Host、Db、User、Table_name、Timestamp略

Columns_priv:设置列的权限

Columns_name:指定哪一列

procs_priv表

可对存储过程、存储函数进行权限设置

字段:

Host、Db、User、Grantor、Timestamp略

Routine_name:存储过程名

Routine_type:存储过程类型,有FUNCTION、PROCEDURE

二、用户管理

查看

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+------------------------------+
| query                        |
+------------------------------+
| User: 'user1@localhost'@'%'; |
| User: 'root'@'127.0.0.1';    |
| User: 'root'@'::1';          |
| User: 'root'@'localhost';    |
+------------------------------+


创建

用户user1,密码123,主机名localhost

mysql> create user 'user1@localhost' identified by '123';


INSERT创建用户,必须为后3个字段设置默认值

mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject)
-> values('localhost','user1',PASSWORD('123'),'','','');
mysql> flush privileges;--重新从user表加载权限


user1远程登录,且拥有所有权限。%表示任意主机可登录

mysql> create user 'user1'@'%' identified by '123456';
mysql> grant all privileges on *.* to 'user1'@'%';


删除

mysql> drop user 'user1@localhost';
mysql> delete from mysql.user where Host='localhost' and User='user1';


修改密码

修改user1密码

mysql> set password for 'user1@localhost'=password("123456");

mysql> update mysql.user
-> set password=password("123")
-> where User="user1" and host="localhost";

mysql> grant select on *.* to 'user1@localhost' identified by '123';


修改root密码

mysql> set password=password("123456");


破解root密码

1、关闭服务

[root@CentOS ~]# service mysql stop


2、不加载权限表启动

[root@CentOS ~]# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &


3、连接数据库

[root@CentOS ~]# mysql -u root mysql


4、修改密码

mysql> update mysql.user
-> set password=password("123456")
-> where user="root";


5、刷新权限表

mysql> flush privileges;


6、重启服务

[root@CentOS ~]# service mysql restart


三、权限管理

查看

查看当前用户

mysql> show grants;


查看root

mysql> show grants for root@localhost;


类型

所有权限:ALL PRIVILEGES

DDL:CREATE、DROP、ALTER、CREATE TEMPORARY TABLES(创建临时表)、LOCK TABLES(锁定表)、GRANT OPTION

DML:SELECT、INSERT、UPDATE、DELETE、INDEX(索引查询表)、REFERENCE

视图:CREATE VIEW、SHOW VIEW

存储过程:ALTER ROUTINE、CREATE ROUTINE、EXECUTE

用户:CREATE USER

服务器:SHOW DATABASE、FILE(加载服务器文件)、PROCESS(服务器管理)、RELOAD(重新加载权限表)、REPLICATION CLIENT、REPLICATION SLAVE、SHUTDOWN、SUPER(超级权限)

授予

语法:

GRANT priv_type [column_list] ON 数据库.表

TO user [IDENTIFIED BY [PASSWORD] 'PASSWORD']

[ user [IDENTIFIED BY [PASSWORD] 'PASSWORD'] ]

[WITH with_option [with_option] ]

#priv_type:权限类型

#column_list:列

#identified by:设置密码

#with_option:

GRANT OPTION:用户还可授权给别的用户

MAX_QUERIES_PER_HOUR 10:每小时最多查询10次

MAX_UPDATES_PER_HOUR 10:每小时最多更新10次

MAX_CONNECTIONS_PER_HOUR 10:每小时最多建立10次连接

MAX_USER_CONNECTIONT 10:每个用户每小时最多建立10个连接

创建用户user4,有查询、更新所有表权限

mysql> grant select,update on *.*
-> to 'user4'@'localhost' identified by '123'
-> with grant option;


授权user3查看mysql数据库的所有表

mysql> grant select on mysql.*
-> to 'user3@localhost';


收回

撤销user4所有权限

mysql> revoke all on *.*
-> from user4@localhost;


本文出自 “运维菜鸟.log” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: