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;看到
 

 

posted @   lisenMiller  阅读(1971)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示