mysql/mariadb配置详解
环境说明
mariadb版本:mariadb-10.2.30
配置文件参数解读
[mysqld] #服务端基本配置
port=3306 #监听端口
user=mysql
pid-file = /var/run/mysqld/mysqld.pid #pid所在的目录
socket = /var/run/mysqld/mysqld.sock #为mysql客户端程序和服务器之间的本地通讯指定一个套接字文件
basedir = /usr #mysql安装目录
datadir = /var/lib/mysql #mysql数据库数据文件存放目录
tmpdir = /tmp #临时文件存放的目录
lc-messages-dir = /usr/share/mysql #存放出错信息文件的目录。
skip-external-locking #mysql选项以避免外部锁定。该选项默认开启。不使用系统锁定,要使用myisamchk,必须关闭服务器
key_buffer_size = 16M #这个参数用来缓存MyISAM存储引擎的索引参数,增加它可得到更好处理的索引(对所有读和多重写)。
max_allowed_packet = 16M #允许最大接收数据包的大小,防止服务器发送过大的数据包
thread_stack = 192K #它指的是每个线程的栈大小
thread_cache_size = 8 #
skip-grant-tables #跳过密码验证
安全配置重要参数
#mariadb开启密码复杂度和密码过期策略
mariadb 10.4以上
#sql语句设置
install soname 'simple_password_check';
show variables like '%password%';
set global simple_password_check_minimal_length=8;
set global simple_password_check_other_characters=1;
set global simple_password_check_letters_same_case=1; #字母数字
set global simple_password_check_digits=1;
set global default_password_lifetime=180;
vim /etc/my.cnf.d/server.cnf
[mysqld]
plugin-load=simple_password_check
#最大连接数 max_connections = #服务器关闭非交互连接之前等待活动的秒数。 wait_timeout = 60 #能够打开的最大文件数 open_files_limit = 1024 #最小1024 65535
#登录错误次数
max_password_errors=5
#禁止远程登录数据库 Web 用户,仅允许本地登录
cd /etc/my.cnf.d/
vim server.conf
修改bind-address=0.0.0.0 并去掉前面的井号
设置某个用户不能远程登陆
安全加固语句
#sql设置用户的密码过期时间 #创建用户并设置密码过期时间为365天过期 create user test@'%' indentified by '123' password expire interval 365 days; #创建用户并设置密码过期时间为不过期
create user test@'%' indentified by '123' password expire never; #interval后面接时间day,这里没有是按所以不接
#修改用户的密码过期时间为365
alter user a@'%' password expire interval 60 days;
#修改用户永不过期
alter user a@'%' password expire never ;
#使用mairadb命令修改用户的密码,密码过期,锁定,解锁
#修改用户密码,改为新密码
set password for 'a'@'%' =password('newpassword');
#修改当前登录用户密码
set password = password('newpassword');
#设置用户口令过期时间
alter user 'a'@'%' password expire;
#设置root用户密码
update user set password=password('root') where user='root';
#权限是某个用户对某张表的权限
#授权语句
grant privileges on databasename.tablename to 'username'@'host';
完全权限 grant all on *.* to 'pig'@'%';
#回收权限
revoke privilege on databasename.tablename from 'username'@'host';
#限制数据库客户端读写数据文件的路径,将该配置项的值设置为/dev/null
将datadir设置为 /dev/null
数据库权限管理
#查看有什么权限选择 show privileges
#在数据库中取消 web 用户对 website 库的所有授权,仅授予 web 用户对 website 库的增删查改的权限
revoke all on website.* from web@'??'; # web的host要在 select user,host from mysql.user;看到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了