当前位置:   article > 正文

mysql用户权限管理

mysql用户权限管理

用户与权限管理(学习笔记)

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服务器上的任何文件(说明用户可以读任何数据库目录下的文件,因为服务 器可以访问这些文件)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/901791
推荐阅读
相关标签
  

闽ICP备14008679号