赞
踩
用户与权限管理(学习笔记)
1.登录mysql服务器:
mysql –h hostname|IP –P port –u username –p DatabaseName –e "SQL语句" #例子: mysql -uroot -p -hlocalhost -P3306 mysql -e "select host,user from user"
2.创建用户
CREATE user 'name'@'%' IDENTIFIED BY '123456'; #不写默认为'%'
3.修改用户
UPDATE user SET user='name123' where user='name'; flush privileges; #修改用户必须刷新
4.删除用户
#1:推荐方法 DROP user 'name123'; #2:该方法不推荐,该方法删除会有残留 DELETE FROM user WHERE Host='%' and User='name123'; flush privileges; #修改用户必须刷新
5. 设置当前用户密码
#1 ALTER user user() IDENTIFIED BY '123'; #2 SET password='123';
6. 修改其它用户密码
#1 ALTER user 'name' IDENTIFIED BY '123'; #2 SET password FOR 'name'@'%'='123'; #3:不推荐 UPDATE MySQL.user SET authentication_string=PASSWORD("123456") WHERE User = "username" AND Host = "hostname";
7. MySQL8密码管理(了解)
#1:单独设置 #1.1:直接设置用户密码过期 ALTER user 'name'@'%' PASSWORD EXPIRE; #1.2:手动指定用户密码过期 #设置kangshifu账号密码每90天过期: CREATE USER 'name'@'%' PASSWORD EXPIRE INTERVAL 90 DAY; ALTER USER 'name'@'%' PASSWORD EXPIRE INTERVAL 90 DAY; #设置密码永不过期: CREATE USER 'name'@'%' PASSWORD EXPIRE NEVER; ALTER USER 'name'@'%' PASSWORD EXPIRE NEVER; #延用全局密码过期策略: CREATE USER 'name'@'%' PASSWORD EXPIRE DEFAULT; ALTER USER 'name'@'%' PASSWORD EXPIRE DEFAULT; #2:全局设置,单位为天 #2.1:命令行配置 SET PERSIST default_password_lifetime=180; #2.2:my.cnf修改配置 [mysqld] default_password_lifetime=180;
#1:全局设置 #1.1:方法一:使用sql SET PERSIST password_history = 6; #设置不能选择最近使用过的6个密码 SET PERSIST password_reuse_interval = 365; #设置不能选择最近一年内的密码 #1.2:方法二:my.cnf配置文件 [mysqld] password_history=6 password_reuse_interval=365 #2:单独设置 #不能使用最近5个密码: CREATE USER 'kangshifu'@'localhost' PASSWORD HISTORY 5; ALTER USER 'kangshifu'@'localhost' PASSWORD HISTORY 5; #不能使用最近365天内的密码: CREATE USER 'kangshifu'@'localhost' PASSWORD REUSE INTERVAL 365 DAY; ALTER USER 'kangshifu'@'localhost' PASSWORD REUSE INTERVAL 365 DAY; #既不能使用最近5个密码,也不能使用365天内的密码 CREATE USER 'kangshifu'@'localhost' PASSWORD HISTORY 5 PASSWORD REUSE INTERVAL 365 DAY; ALTER USER 'kangshifu'@'localhost' PASSWORD HISTORY 5 PASSWORD REUSE INTERVAL 365 DAY;
8.权限管理
#1:查看mysql的所有权限 show privileges #2:授予权限 #2.1:直接授予,用户不存在直接创建 GRANT INSERT,SELECT ON *.* TO 'name'@'%' IDENTIFIED BY '123'; GRANT ALL PRIVILEGES ON *.* TO 'name'@'%' IDENTIFIED BY '123'; #2.2:先创建角色,再把角色给用户 CREATE ROLE 'role_name'@'localhost'; GRANT SELECT ON *.* TO 'role_name'; GRANT 'role_name' TO 'name'@'%'; #3:查看权限 #3.1:查看当前用户权限 SHOW GRANTS; # 或 SHOW GRANTS FOR CURRENT_USER; # 或 SHOW GRANTS FOR CURRENT_USER(); #3.2:查看其他用户权限 SHOW GRANTS FOR 'name'@'%'; #3.3:查看角色权限 SHOW GRANTS FOR 'role_name'; #4:收回权限 #4.1:用户权限 REVOKE INSERT,SELECT ON *.* FROM 'name'@'%'; #4.2:角色权限 REVOKE INSERT ON *.* FROM 'role_name'; #5:删除角色 DROP ROLE 'role_name'; #6:撤销用户的角色 REVOKE 'role_name' FROM 'name'@'%'; #7:激活角色 #7.1:方式1:使用set default role 命令激活角色 SET DEFAULT ROLE ALL TO 'dev1'@'localhost', 'read_user1'@'localhost', 'read_user2'@'localhost', 'rw_user1'@'localhost'; #7.2:方式2:将activate_all_roles_on_login设置为ON SET GLOBAL activate_all_roles_on_login=ON;
(1) CREATE和DROP权限 ,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。如果将 MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。
(2) SELECT、INSERT、UPDATE和DELETE权限 允许在一个数据库现有的表上实施操作。
(3) SELECT权限 只有在它们真正从一个表中检索行时才被用到。
(4) INDEX权限 允许创建或删除索引,INDEX适用于已 有的表。如果具有某个表的CREATE权限,就可以在CREATE TABLE语句中包括索引定义。
(5) ALTER权 限 可以使用ALTER TABLE来更改表的结构和重新命名表。
(6) CREATE ROUTINE权限 用来创建保存的 程序(函数和程序),ALTER ROUTINE权限用来更改和删除保存的程序, EXECUTE权限 用来执行保存的 程序。
(7) GRANT权限 允许授权给其他用户,可用于数据库、表和保存的程序。
(8) FILE权限 使用 户可以使用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句读或写服务器上的文件,任何被授予FILE权 限的用户都能读或写MySQL服务器上的任何文件(说明用户可以读任何数据库目录下的文件,因为服务 器可以访问这些文件)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。