热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql安全优化_MySQL安装与安全优化

Ubuntu环境下MySQL安装与安全优化。安装sudoapt-getupdatesudoapt-getinstallmysql-servermysql-client#设置root

Ubuntu 环境下 MySQL 安装与安全优化。

安装sudo apt-get update

sudo apt-get install mysql-server mysql-client # 设置root密码

# 设置数据库目录

sudo mysql_install_db

# 移除匿名帐户,禁用root远程登录

sudo mysql_secure_installation # 回答n,y,y,y,y

设置默认字符集

中文环境下,设置 utf8 为默认字符集,防止出现乱码。$ sudo vi /etc/mysql/my.cnf

[mysqld]

collation-server = utf8_unicode_ci

init-connect = 'SET NAMES utf8'

character-set-server = utf8

:wq保存配置,重启MySQL

$ sudo service mysql restart

# 查看字符集设置

$ mysql -u root -p

show variables like 'char%';

show variables like 'collation%';

加强 MySQL 安全

迁移数据库目录

MySQL 数据库默认路径 /var/lib/mysql,实际工作中,常常需要定制数据库路径,比如 /data/mysql,或者 /opt/mysql,可以是单独的数据盘或者分区,这样有利于性能调优和保护数据安全,同时也方便进行维护。

使用 mysql_install_db 重新初始化 datadir :mkdir -p /data/mysql

chown -R mysql:mysql /data/mysql

mysql_install_db --user=mysql --basedir=/usr --datadir=/data/mysql

rm -rf /var/lib/mysql

禁用远程访问等$ sudo vi /etc/mysql/my.cnf

[mysqld]

datadir = /var/lib/mysql #数据库文件目录

bind-address = 127.0.0.1 #只允许本机访问,或

skip-networking #禁用网络(但本机可以访问)

skip-show-database #禁用SHOW DATABASES

# 可增加:

local-infile=0 #禁止加载本地文件,防止类似:SELECT load_file("/etc/passwd");

$ mysql -u root -p

use mysql

UPDATE user SET Host='localhost' WHERE Host="%";

用户名优化DROP USER ""; # 或

DELETE FROM user WHERE User="";

RENAME USER root TO new_user; # 或

update user set user="new_user" where user="root"; # 或

rename user 'root'@'localhost' to 'newAdminUser'@'localhost';

密码优化UPDATE user SET Password=PASSWORD('newPassWord') WHERE User="user"; # or

SET PASSWORD FOR 'username'@'%hostname' = PASSWORD('newpass');

select user,host,password from user;

FLUSH PRIVILEGES;

# 或

$ mysqladmin -u username -p password newpass

清空命令历史

客户端工具 mysql 会将执行的命令记录在当前用户目录下的 .mysql_history 文件中,其中可能包含密码等敏感信息。cat /dev/null > ~/.mysql_history

使用日志

MySQL 日志包括错误日志、慢查询日志、一般日志和二进制日志,默认生成错误日志。在产品环境下,要合理使用日志,避免给系统增加不必要的压力。

配置文件$ sudo vi /etc/mysql/my.cnf

log_error = /var/log/mysql/error.log

#general_log_file = /var/log/mysql/mysql.log

#log_slow_queries = /var/log/mysql/mysql-slow.log

#log_bin = /var/log/mysql/mysql-bin.log

#general_log = 1

#long_query_time = 2

#log-queries-not-using-indexes

/etc/mysql/conf.d/mysqld_safe_syslog.cnf

/etc/logrotate.d/mysql-server

查看配置sudo service mysql restart

mysql> SHOW VARIABLES LIKE '%log%';

在代码中控制SET GLOBAL general_log = 'ON';

SET GLOBAL general_log = 'OFF';

SET GLOBAL slow_query_log = 'ON';

SET GLOBAL slow_query_log = 'OFF';

日志文件位置/var/lib/mysql/{host_name}.log

/var/lib/mysql/{host_name}.err

/var/lib/mysql/{host_name}-slow.log

/var/log/mysql.err - MySQL Error log file

/var/log/mysql.log - MySQL log file

sudo ls -l /var/log/mysql*

日志监控查看grep 'something' /var/log/mysql.err

tail -f /var/log/mysql/mysql.log

tail -f /var/log/mysql.err

tail -f /var/log/syslog

less /var/log/mysql.errmysql> SHOW VARIABLES LIKE '%ssl%';

mysql> \s

$ cat /etc/apparmor.d/usr.sbin.mysqld

...

/etc/mysql/*.pem r,

制作SSL证书sudo su -

cd /etc/mysql

openssl genrsa 2048 > ca-key.pem

openssl req -new -x509 -nodes -days 3600 \

-key ca-key.pem -out ca-cert.pem

openssl req -newkey rsa:2048 -days 3600 \

-nodes -keyout server-key.pem -out server-req.pem

openssl rsa -in server-key.pem -out server-key.pem

openssl x509 -req -in server-req.pem -days 3600 \

-CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

openssl req -newkey rsa:2048 -days 3600 \

-nodes -keyout client-key.pem -out client-req.pem

openssl rsa -in client-key.pem -out client-key.pem

openssl x509 -req -in client-req.pem -days 3600 \

-CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

配置服务端$ sudo vi /etc/mysql/my.cnf

[mysqld]

ssl-ca=/etc/mysql/ca-cert.pem

ssl-cert=/etc/mysql/server-cert.pem

ssl-key=/etc/mysql/server-key.pem

# 重启 MySQL

$ sudo service mysql restart

# 创建使用SSL帐号

GRANT ALL PRIVILEGES ON *.* TO 'ssluser'@'%' IDENTIFIED BY 'pass' REQUIRE SSL;

配置客户端$ sudo vi /etc/mysql/my.cnf

[client]

ssl-ca=/etc/mysql/ca-cert.pem

ssl-cert=/etc/mysql/client-cert.pem

ssl-key=/etc/mysql/client-key.pem

mysql -u ssluser -p -sss -e '\s' | grep SSL

MySQL Workbench 是 MySQL 官方提供的数据库管理工具,免费跨平台,支持数据库建模,支持 MySQL 和 MariaDB,支持通过 SSH 访问远程 MySQL,即使将 MySQL 完全配置为本地访问也没有问题。当然,可以继续使用 phpMyAdmin 管理数据库。



推荐阅读
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • ZooKeeper集群脑裂问题及其解决方案
    本文深入探讨了ZooKeeper集群中可能出现的脑裂问题,分析其成因,并提供了多种有效的解决方案,确保集群在高可用性环境下的稳定运行。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • CentOS 6.5 上安装 MySQL 5.7.23 的详细步骤
    本文详细介绍如何在 CentOS 6.5 系统上成功安装 MySQL 5.7.23,包括卸载旧版本、下载安装包、配置文件修改及启动服务等关键步骤。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • NTP服务器配置详解:原理与工作模式
    本文深入探讨了网络时间协议(NTP)的工作原理及其多种工作模式,旨在帮助读者全面理解NTP的配置参数和应用场景。NTP是基于RFC 1305的时间同步标准,广泛应用于分布式系统中,确保设备间时钟的一致性。 ... [详细]
author-avatar
ZhuJiongJiongnu_441
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有