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

sudo apt-get updatesudo 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.err

参考:

使用SSL连接

查看SSL信息

mysql> 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

参考:

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

高洛峰mysql_【干货】MySQL 安装与安全优化相关推荐

  1. mysql入门_高洛峰_简介_linux安装_远程连接配置_sql语句初始

    关键字 简介 安装与linux下配置 了解数据库的sql语句操作 简介 什么是mysql 数据库 STRUCTURED QUERY LANGUAGE 为什么选择mysql 常用数据库有oracle,D ...

  2. 高洛峰2015年新版视频发布

    软件开发已经连续5年被国家评为是性价比最高的工作了, 2014年大行其道的仍然是Web开发, 占全部软件开发方向的60%,2015年Web开发还会继续向大型网站发展,而移动互联APP,微信公众号开发, ...

  3. php memcache内存大小,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP

    PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP 发布时间:2020-06-22 18:23:10 来源:51CTO 阅读:232 作者:津沙港湾 栏目:数据库 PHP mem ...

  4. 细说php作者高洛峰免费收徒

    细说php作者高洛峰免费收徒 详情可咨询2962767285.高洛峰老师现在是 LAMP兄弟连教学总监, 著有<细说PHP>和<细说PHP2>.大学毕业于首都经贸大学计算机系, ...

  5. PHP面向对象技术(全面讲解)(高洛峰)

    PHP面向对象技术(全面讲解)(高洛峰) 内容来自:http://blog.csdn.net/dengzonghuan/article/details/4055666 本部分一共包括以下一些技术点: ...

  6. Mycat高可用解决方案一(mysql安装)

    Mycat高可用解决方案一(mysql安装) Mycat关键特性 关键特性 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 ...

  7. php.ini maxfileuploads,细说PHP高洛峰文件上传类源文件

    以下是兄弟连php视频教程中高洛峰老师所教授的文件上传类的源代码,尚没有完全理解精髓,在这里记录一下,供日后有需要时查看: $value){ $key=strtolower($key); if(!in ...

  8. 在Ubuntu上源码安装MySQL+安装问题解决+安全优化

    当然,MySQL的安装方法多种多样,在Ubuntu上,你可以采用apt-get的方式安装,这样的好处是:快速方便.基本上,它会帮你解决所有的函数库依赖问题,正常情况下,只要apt-get执行完成,那么 ...

  9. 从消防水管喝水mysql_再见MYSQL - 06 - 查询性能优化

    查询优化 索引优化 表库结构优化 三架马车 6.1 查询为什么会慢 ? 真正重要的是响应时间 把查询看做一个任务,则他由多个子任务组成 优化子任务 消除一部分子任务 减少子任务的执行次数 让子任务运行 ...

最新文章

  1. 一生受益的三个小故事
  2. 超级数学计算机,超级计算器+
  3. music‘s effects
  4. mybatis-Batch Executor
  5. java哪个城市的需求量大_4大互联网热门城市Java薪资情况,看完你想去哪个城市发展呢?...
  6. 从零开始学Pytorch之线性回归
  7. 数据库并发抢红包_秒杀场景实践之抢红包
  8. sklearn之Pipeline 估计器
  9. jquery.alerts.js模拟js的alert,confirm的插件
  10. 用sqoop从mysql导数hive_使用sqoop从mysql导入到hive基本操作
  11. 《基础微积分教材中译版》--目录
  12. 360安全软件设置白名单
  13. 怎么用计算机算化学,化学计算机
  14. 为什么企业需要CRM系统?CRM的作用及其重要性分析
  15. 区块链技术的应用有哪些?
  16. Redis zset的zadd()和zincrby()踩坑记录
  17. 倒计时1天 | 大势智慧2022新品发布会全面而来!
  18. 提取html string,c#从html中提取文本
  19. 【mybatis源码】 mybatis底层源码分析
  20. 小白玩大数据日志分析系统经典入门实操篇FileBeat+ElasticSearch+Kibana 实时日志系统搭建从入门到放弃

热门文章

  1. ASP.NET微信群机器人管家系统,源码分享
  2. access specifier
  3. 生产任务计划单,金蝶KIS旗舰版专业版K3WISE,生产管理软件ERP,金蝶生产任务管理,生产计划管理,自动下推生产领料单
  4. 基于安卓的校园二手跳蚤市场APP设计与实现.rar(项目源码+论文)
  5. 打火机与公主裙剧中的爱心
  6. python解析word中表格_python读取word表格
  7. 苹果seo_上海网站seo优化怎样理解
  8. 银行,金融行业的清分,结算,清算,核算到底是什么含义? 现金需要搬运么?
  9. 小程序商城制作一个需要多少钱?
  10. 如何预防服务器IP被封