mysql 数据库授权
授权命令GRANT 语句的语法如下:
GRANT privileges (columns)
ON what
TO user IDENTIFIEDBY “password”
WITH GRANT OPTION ;
FLUSH PRIVILEGES;
一、普通用户授权
查询、插入、更新、删除:
GRANT select ON *.* to username@'%';
GRANT insert ON *.* to username@'%';
GRANT update ON *.* to username@'%';
GRANT delete ON *.* to username@'%';
用一条命令来替代:
GRANT select, insert, update, delete ON testdb.* to username@'%';
管理某个MySQL数据库权限:
GRANT all privileges ON testdb to username@'localhost';
FLUSH PRIVILEGES;
二、高级DBA管理MySQL中所有数据库的权限:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
FLUSH PRIVILEGES;
三、查看 MySQL 用户权限
查看当前用户权限:
show grants;
查看其他用户权限:
show grants for username@localhost;
四、撤销用户权限:
revoke all ON *.* from username@localhost;
FLUSH PRIVILEGES;
五、实例操作
1.增加用户test1
密码为passwd, 让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作。
GRANT select,insert,update,delete ON mydb.* to test2@localhost identified by "passwd";
FLUSH PRIVILEGES;
2.增加用户test2
密码为passwd,可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。
GRANT select,insert,update,delete ON *.* to test1@'%' Identified by "passwd";
FLUSH PRIVILEGES;
3.增加用户test3
密码为passwd,仅在172.27.11.222主机上登录,并对所有数据库有查询、插入、修改、删除的权限。
GRANT select,insert,update,delete ON *.* to test1@'172.27.11.222' Identified by "passwd";
FLUSH PRIVILEGES;
权限说明:
1.select、insert、update和delete权限允许你在一个数据库现有的表上实施操作,是基本权限
2.alter权限允许你使用ALTER TABLE
3.create和drop权限允许你创建新的数据库和表,或抛弃(删除)现存的数据库和表,如果将mysql数据库的drop权限授予一个用户,该用户能抛弃存储了MySQL存取权限的数据库!
4.grant权限允许你把你自己拥有的那些权限授给其他的用户。
例如:
用户能读取和修改已有表的内容,不允许创建新表或删除表,可按如下授权:
GRANT SELECT,INSERT,DELETE,UPDATE ON test_db.* TO ‘user’@’%’ IDENTIFIEDBY “pass”
mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。
授权表说明:
user表:
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。db表:
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。host表:
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。tables_priv表:
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。columns_priv表:
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。