Mysql用户受权管理

Mysql 涉及用户权限的语句有GRANT,REVOKEmysql

经过Mysql自带的help文档能够查看相应的语法:sql

GRANT数据库

GRANT priv_type,...... ON [obj_type] priv_level TO user_specification [WITH with_option ...]bash

 

priv_type对应的有:
ALL | ALTER | ALTER ROUTINE | CREATE | CREATE ROUTINE | CREATE TEMPORARY TABLES | CREATE USER | CREATE VIEW | DELETE | DROP | EXECUTE | FILE | INDEX |  INSERT | LOCK TABLES | PROCESS | REFERENCES | RELOAD | REPLICATION CLIENT | REPLICATION SLAVE | SELECT | SHOW DATABASES | SHOW VIEW | SHUTDOWN | SUPER | UPDATE | USAGE服务器

权限ide

意义debug

ALL [PRIVILEGES]日志

设置除GRANT OPTION以外的全部简单权限事件

ALTERip

容许使用ALTER TABLE

ALTER ROUTINE

更改或取消已存储的子程序

CREATE

容许使用CREATE TABLE

CREATE ROUTINE

建立已存储的子程序

CREATE TEMPORARY TABLES

容许使用CREATE TEMPORARY TABLE

CREATE USER

容许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。

CREATE VIEW

容许使用CREATE VIEW

DELETE

容许使用DELETE

DROP

容许使用DROP TABLE

EXECUTE

容许用户运行已存储的子程序

FILE

容许使用SELECT...INTO OUTFILE和LOAD DATA INFILE

INDEX

容许使用CREATE INDEX和DROP INDEX

INSERT

容许使用INSERT

LOCK TABLES

容许对您拥有SELECT权限的表使用LOCK TABLES

PROCESS

容许使用SHOW FULL PROCESSLIST

REFERENCES

未被实施

RELOAD

容许使用FLUSH

REPLICATION CLIENT

容许用户询问从属服务器或主服务器的地址

REPLICATION SLAVE

用于复制型从属服务器(从主服务器中读取二进制日志事件)

SELECT

容许使用SELECT

SHOW DATABASES

SHOW DATABASES显示全部数据库

SHOW VIEW

容许使用SHOW CREATE VIEW

SHUTDOWN

容许使用mysqladmin shutdown

SUPER

容许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;容许您链接(一次),即便已达到max_connections。

UPDATE

容许使用UPDATE

USAGE

“无权限”的同义词

GRANT OPTION

 

object_type对应的有:
    TABLE  | FUNCTION | PROCEDURE

priv_level对应的有:
    * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name

user_specification对应内容为:
    [ IDENTIFIED BY [PASSWORD] 'password' | IDENTIFIED WITH auth_plugin [AS 'auth_string'] ]

 

ssl_option对应的有:
    SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject'

 

with_option对应内容为:
    GRANT OPTION  | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count  | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count

 

 举例:

mysql> create database testdb;
mysql> grant all privileges on testdb.* to test@'localhost'  identified by 'testdb';

mysql> create user test@'localhost' identified by 'testdb';

经过上述方式,用户被建立在mysql.user表中。

mysql> select host,user,authentication_string from mysql.user where user='test';

 

对于当前用户受权状况能够经过如下语句查询

mysql> show grants;
mysql> show grants for test@'localhost';
mysql> show grants for current_user;
mysql> show grants for current_user();

REVOKE

 

REOVKE priv_type,...... ON [obj_type] priv_level FROM user_specification

 

举例:

mysql> revoke all on testdb.* from test@‘127.0.0.1’

删除user表中定义的用户

mysql> drop user 'dbd'@'127.0.0.1';
相关文章
相关标签/搜索