新年初始,万象更新,新年的学习目标希望自己把Lnmp这套基础知识在扎实的学一遍,尤其是之前不曾接触到的盲区,做一个知识扫盲的过程,安全方面一直被中小企业忽略的一环,面向AI学习Mysql安全管理。
权限授予的原则:
1.mysql 修改当前登录用户的密码的命令,比如我们想把密码修改成2024@zy126***
ALTER USER USER() IDENTIFIED BY '2024@zy126***';
2.修改普通用户的密码:
ALTER USER 'stark' @'%' IDENTIFIED BY '2024@zy126***';
3.给用户设置随机密码:
CREATE USER 'demo01' @'localhost' IDENTIFIED BY random PASSWORD;
1、强制使用强密码,首先安装插件,validate_password
是一个用于密码验证的插件。它提供了一系列的参数来定义密码的强度要求,有助于增强数据库用户账户的安全性。通过配置这些参数,可以强制用户设置符合特定规则的密码,如密码长度、包含字符的种类等。
检查插件是否已安装,可以使用SHOW PLUGINS;
命令查看
# v8.0 安装命令
install component 'file://component_validate_password';
# v5.7 安装命令
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
2、查看插件信息:
SHOW GLOBAL VARIABLES LIKE 'validate_password%'
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
在这里对参数进行一些解释:
SET GLOBAL validate_password_length = 8;
SET GLOBAL validate_password_check_user_name = ON
;可以禁止用户使用用户名作为密码。CREATE USER 'demo01' @'localhost' IDENTIFIED BY 'Pd';
安装插件后简单的密码就不允许设置了,会产生错误信息1819 - Your password does not satisfy the current policy requirements
1、在Mysql配置文件的mysqld
加入skip-grant-tables
,请注意要加在第一行才会生效:
2、重新启动Mysql服务service mysql restart
或 /etc/init.d/mysql restart
:
3、执行Sql语句new_password
作为Root的新密码,执行以后别忘了返回配置文件去掉skip-grant-tables
,这句的意思是不做密码校验,只是为了忘记root密码而临时启用的。
UPDATE mysql.USER SET authentication_string = PASSWORD ( 'new_password' ) WHERE USER = 'root';
Mysql不仅对密码进行限制,还有对资源进行限制,对用户访问进行资源的隔离策略:
1、创建用户时限制资源
CREATE USER 'demo03' @'localhost' IDENTIFIED BY 'Pd11121dd('
WITH MAX_QUERIES_PER_HOUR 500
MAX_UPDATES_PER_HOUR 100
MAX_USER_CONNECTIONS 50
MAX_CONNECTIONS_PER_HOUR 50;
2、修改现有用户的资源限制
ALTER USER 'demo03' @'localhost'
WITH MAX_QUERIES_PER_HOUR 500;
3、重置资源使用计数
虽然它不是直接重置连接资源计数,但在某些情况下间接影响连接相关的资源管理。例如,当你对用户的连接权限进行了调整,执行此命令可以让新的权限设置立即生效,从而可能改变后续用户连接的行为和资源计数方式。
Sql Mode 对数据的操作有很大的影响,不用的Sql Mode对同一条Sql语句的执行结果也有很大的不同。
1、建议启用严格模式,可以避免错误数据启用
2、建议启用ONLY_FULL_GROUP_BY
3、升级或迁移时,注意Sql mode 新老环境是否一致
## 添加Sql Mode选项
SET SESSION sql_mode = sys.list_add ( @@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY' );
## 删除Sql Mode选项
SET SESSION sql_mode = sys.list_drop ( @@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY' );
查看Sql mode
SELECT @@sql_mode;
Sql mode的修改有两种,一种是修改Mysql的配置文件,需要重启Mysql服务,一种是直接执行Sql语句
[mysqld]
sql_mode = SONLY_FULL_GROUP_BY,TRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
AI很火,他向一股潮流席卷着四面八荒,其实对于它要充满客观,技术的变化,万变不离其宗。用好AI的关键在于交互时交互的文档用词会不会准确。
1、创建用户和赋权
Mysql5.7 创建一个新用户,用户名是stark,host是%,密码是 2025@stark^2!-0 权限是对所有库都有增删改查四个权限,帮我写一个sql语句:
-- 创建用户并设置指定密码
CREATE USER 'stark'@'%' IDENTIFIED BY '2025@stark^2!-0';
-- 授予对所有数据库的增删改查权限
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'stark'@'%';
-- 刷新权限,使设置生效
FLUSH PRIVILEGES;
2.回收Mysql用户权限
Mysql5.7 用户名是stark,host是% 收回对所有数据库的 DELETE 权限,请帮我写sql语句
REVOKE DELETE ON *.* FROM 'stark'@'%';
FLUSH PRIVILEGES;
3.Sql语句对角色的操作
Mysql5.7 创建角色 名称 developer_role 授予对某个数据库 spaces 的增删改查的权限 将角色赋予用户 stark ,请帮我写sql语句
-- 创建角色
CREATE ROLE developer_role;
-- 授予角色对spaces数据库的增删改查权限
GRANT SELECT, INSERT, UPDATE, DELETE ON spaces.* TO developer_role;
-- 将角色赋予用户stark
GRANT developer_role TO 'stark'@'%';
4.密码试错
Mysql5.7 创建用户 stark02,host是% ,使用密码 2025@stark^2!-0 限制连续输错4次密码会被锁定,锁3天 请我帮我写CREATE USER语句帮我实现
有时间AI返回的也不正确,比如下面的Sql语句:
-- 创建用户并设置密码
CREATE USER 'stark02'@'%' IDENTIFIED BY '2025@stark^2!-0';
-- 设置密码验证策略相关参数(针对全局生效,你也可以针对具体用户来设置,此处示例全局方式)
SET GLOBAL validate_password_number_of_trials = 4;
SET GLOBAL validate_password_lock_time = 3 * 24 * 60 * 60;
-- 刷新权限使设置生效(针对密码验证策略相关参数的设置生效)
FLUSH PRIVILEGES;
5.限制资源
Mysql 5.7 创建用户stark03 密码使用 Udfg_as81 限制每小时最多500次查询 每小时最多100次更新 用一条Create user语句帮我实现
AI 对问题4、5 都没有很好的一个正确返回,所以在使用AI时,不需要神话AI,AI只是一个编程辅助的文档工具,并没有什么特殊的地方,但是它的出现确实能让人提升效率,一般返回的答案都是正确答案。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。