mysql/mariadb配置详解

发布时间 2023-04-03 11:39:00作者: lisenMiller

环境说明

mariadb版本:mariadb-10.4

配置文件参数解读

[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

 安全加固语句

#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;

#授权语句
  grant privileges on databasename.tablename to 'username'@'host';
  完全权限   grant all on *.* to 'pig'@'%';

#回收权限
  revoke privilege on databasename.table name from 'username'@'host';

#
限制数据库客户端读写数据文件的路径,将该配置项的值设置为/dev/null
将datadir设置为 /dev/null
#禁止远程登录数据库 Web 用户,仅允许本地登录
cd /etc/my.cnf.d/
vim server.conf
修改bind-address=0.0.0.0 并去掉前面的井号

 数据库权限

#查询数据库权限有什么
show privileges

#回收权限        #回收时拿回权限所以是from
revoke all on website.* from web@'host' ;#host从select user,host from mysql.user;看

#授权    授予权限所以是to
grant select,insert,delete,alter on website.* to web@'host';