目的:

  1. 为了后续阅读,统一环境、方便演示

前提:

  1. 准备好一台Linux服务器

环境信息:

备注
数据库版本1. MySQL 5.6.x
2. MySQL 5.7.x
5.6与5.7的版本在安装步骤上有略微的差异,但是基本上都是差不多的
操作系统版本CentOS 6.5 x86-64一样适用的版本:RHEL 7 / OEL 7

安装介质:
下载地址:https://downloads.mysql.com/archives/community/

5.7.34:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
5.6.51:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
5.6.35:https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.6.35-1.linux_glibc2.5.x86_64.rpm-bundle.tar

创建Linux操作系统用户:

在Linux上创建用户的时候,先创建用户组,再创建用户。

这里,先创建用户组【mysql】
再创建用户【mysql】,并加入用户组【mysql】

创建程序、数据存放目录:

解压缩二进制安装文件,并设置目录权限:
将二进制安装文件解压到MySQL的程序目录中:/home/mysql/program

创建软链接,并设置MySQL命令的环境变量:

MySQL的配置文件:my.cnf

MySQL数据库的配置文件,在我们的规划中,是存放在:/home/mysql/conf
需要配置好其中与操作系统路径相关的参数

  • socket
  • pid-file
  • datadir
  • tmpdir
  • log-error
  • slow_query_log_file
  • log-bin
  • relay-log
  • innod_data_home_dir
  • innodb_log_group_home_dir
  • innodb_undo_directory

文件:my.cnf

初始化MySQL数据库:

在MySQL 5.7中,取消了脚本:mysql_install_db,因此可以直接使用bin/mysqld进行初始化,它的初始化有两个选项:

  • –initialize:使用该选项初始化,会在错误日志中生成一个随机的root口令,可以过滤关键字【A temporary password is generated for root】进行搜索;初始化完成后,启动MySQL服务后进行登录的时候,需要使用该随机密码进行登录,并在登陆后,进行修改
  • –initialize-insecure:使用该选项初始化,不会产生随机密码,而是会像5.7之前的版本一样,初始化完成后,第一次登录数据库,root的密码为空

启动MySQL服务:

如果是MS Windows环境,则可以在Command终端窗口中执行下面的命令:

MySQL的服务成功启动后,会在错误日志中打印一条有关MySQL版本号与socket文件的信息:


在以上的步骤中,就完成了一个初步的MySQL的安装部署;
接下来对MySQL做简单的【安全加固】;


登录MySQL后,查看当前登录的用户:

查看MySQL的版本:

删除非root用户或者非localhost用户,并修改root的密码:

在默认情况下MySQL初始化完成后,会创建一些默认用户:

  • 匿名用户
  • 允许127.0.0.1和localhost登录的非root用户

建议删除这些无用且可能给数据库带来风险的用户。

查看当前数据库的用户:

设置root密码:

清理test库:

在默认情况下,MySQL 5.6.X初始化安装之后,会生成一个测试用途的库:test
这个库在生产环境中一般是不需要的,如果确定不使用,建议删除。

清理数据表:mysql.db:

在默认情况下,MySQL 5.6.X初始化安装完成后,在mysql.db中会有针对test库的任意用户、任意地址的访问权限;
无任何权限用户或者匿名用户登录MySQL后,都可以对test库进行任意操作;
因此,建议MySQL初始化安装完成后,清理这些不安全的用户,或者删除mysql.db表中对test库预设的访问权限;

创建:用户、库、表、数据

创建用户的时候不要使用DML直接操作mysql.user,而是要使用命令:

  • grant
  • revoke
  • create user
  • drop user

在MySQL 5.7中,原password字段,变更为了【authentication_string】

创建库、表、程序账号:

创建程序账号,在生产环境中不建议直接使用root账号,最好是新建一个管理员账号与程序账号

程序账号一般给开发者使用,权限推荐:

  • create routine
  • alter routine
  • execute
  • select
  • delete
  • insert
  • update

程序账号需要:

  • 指定具体的库或表
  • 并且,指定具体的访问来源

遵循最小化原则;

创建完应用相关的资源、账号,并分配权限后,需要验证权限是否配置正确:
用分配的账号访问应用的库,并执行基本的建表、插入数据等操作,验证无误后,就可以正式交付给应用方使用,交付的信息格式:


MySQL参数文件模板

MySQL 5.7.X:my.cnf


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装