云计算百科
云计算领域专业知识百科平台

服务器MySQL的用户管理和权限管理

 1.mysql的权限管理

1)mysql.user

​    1.用户字段:Host、User、Password

​    2.权限字段:_Priv结尾的字段

​    3.安全字段:ssl x509字段

​    4.资源控制字段:max开头的字段

2)mysql.db

​    1.用户字段:host、user、password

​    2.权限字段:剩下的_Priv结尾的字段

3)权限信息

​    1.表、列、存储过程的权限表

    2.mysql.tables_priv,mysql.columns_priv,procs_priv

4)权限级别排列

​    1.mysql.user    //全局授权

​    2.mysql.db    //数据库级别授权

​    3.其他    //表级,列级授权

5)数据库和表格式

数据库名.*                      //数据库中的所有 数据库名.表名                //指定数据库中的某张表 数据库名.存储过程         //指定数据库中的存储过程 *.*                                   //所有数据库

6)用户和ip格式

用户名@IP地址:用户只能在指定的IP地址下才能访问。 用户名@192.168.1.%:用户只能在192.168.1段的任意IP地址下才能访问(通配符%表示任意)。 用户名%@qfedu.com:用户可以在任意IP地址下访问(默认IP地址为通配符%)

 2.mysql用户管理

1)创建用户

1.create user 语句创建

CREATE USER 用户名@IP地址 [IDENTIFIED BY '密码']

实例:

create user 'xiaoli'@'localhost' identified by 'Curry@123';

2.grant语句创建

GRANT SELECT ON *.* TO '用户名'@'IP地址' IDENTIFIED BY '密码';

实例: grant select on *.* to 'testuser'@'localhost' identified by 'Curry@123';

2)删除用户

1.drop user删除

DROP USER 用户名@IP地址; 实例:

drop user 'xiaoli'@'localhost';

2.delete语句删除

DELETE FROM mysql.user WHERE user='用户名' AND host='IP地址'; 实例:

delete from mysql.user where user='xiaoli' and host='localhost';

3)修改用户

RENAME USER '旧用户名'@'IP地址' TO '新用户名'@'IP地址'; 实例:

rename user 'xiaoli'@'localhost' to 'xiaoming'@'localhost';

4)修改密码

注意:修改完密码必须刷新权限

flush privileges;

1.root用户修改自己密码 方法一:使用 mysqladmin 命令行工具 mysqladmin -u用户名 -p旧密码 password '新密码'

实例:

mysqladmin -uroot -pLiuyi@123 password 'Liuyi@456';

方法二:使用 ALTER USER 语句

ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';

实例: ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

方法三:使用 SET PASSWORD 语句

SET PASSWORD [FOR '用户名'@'主机名'] = PASSWORD('新密码');

实例: SET PASSWORD = PASSWORD('new_password');

5)root修改其他用户密码

方法一:修改用户密码 ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'Curry@123';

方法二:授予权限并设置密码 GRANT 权限 ON 数据库.表 TO '用户名'@'主机名' IDENTIFIED BY '密码';

6)普通用户修改自己密码

set password=password('new_password');

7)找回root密码

1.修改mysql配置文件

在[mysqld]下面加上skip-grant-tables

[root@qfedu.com ~]# vim /etc/my.cnf … [mysqld] #设置免密登录 skip-grant-tables

2.重启mysql

systemctl restart mysqld

3.修改密码

1.终端输入mysql直接登录mysql数据库 mysql

2.切换到mysql系统库mysql use mysql;

3.设置密码 update user set authentication_string=password('密码') where user='root';

4.注释掉免密登陆

5.重启mysql然后登陆

8)密码复杂度

1.安装密码插件

mysql默认其用量密码复杂度设置,创建名字叫做validate_password

INSTALL PLUGIN validate_password SONAME 'validate_password.so';

9)修改配置文件

1.修改配置/etc/my.cnf

[mysqld] plugin-load = validate_password.so validate_password_policy = 0 validate-password = FORCE_PLUS_PERMANENT

2.重启mysql生效

systemctl restart mysqld

3.查看错误日志

mysql> SHOW VARIABLES LIKE 'log_error';

4.登陆数据库查看

show variables like 'validate%'

以下是每个变量的含义:

  • validate_password_check_user_name:

    • 是否检查密码是否与用户名相同。

    • 默认值:OFF(不检查)。

    • 如果设置为 ON,密码不能与用户名相同。

  • validate_password_dictionary_file:

    • 字典文件的路径,用于检查密码是否包含常见单词。

    • 默认值:空(未启用字典检查)。

  • validate_password_length:

    • 密码的最小长度。

    • 默认值:8。

  • validate_password_mixed_case_count:

    • 密码中至少需要包含的大写和小写字母的数量。

    • 默认值:1。

  • validate_password_number_count:

    • 密码中至少需要包含的数字数量。

    • 默认值:1。

  • validate_password_policy:

    • 密码策略的强度级别。

    • 可选值:

      • 0 或 LOW:只检查密码长度。

      • 1 或 MEDIUM:检查长度、数字、大小写字母和特殊字符。

      • 2 或 STRONG:在 MEDIUM 的基础上增加字典文件检查。

    • 默认值:MEDIUM。

  • validate_password_special_char_count:

    • 密码中至少需要包含的特殊字符数量。

    • 默认值:1。

  • 9)回收权限

    REVOKE 权限类型 ON 数据库名.表名 FROM '用户名'@'主机';

    注意事项:

    1. 被回收的权限必须存在

    • 只有当用户已经拥有要撤销的权限时,REVOKE 命令才会成功执行。

    • 如果用户没有该权限,执行 REVOKE 会报错。

    2.撤销所有权限

    撤销整个服务器的所有权限:

    REVOKE ALL PRIVILEGES ON *.* FROM 'admin1'@'%';

    撤销整个数据库的所有权限:

    REVOKE ALL PRIVILEGES ON mydb.* FROM 'admin1'@'%';

    撤销特定表的所有权限:

    REVOKE ALL PRIVILEGES ON mydb.mytable FROM 'admin1'@'%';

    3.顺序权限

    FLUSH PRIVILEGES;

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 服务器MySQL的用户管理和权限管理
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!