在CentOS下安装MySQL 5.6用于历史数据存储和事务性查询,实现目标是:
- 数据库由独立的mysql用户管理,数据存放在该用户的主目录下;
- 数据库安装方式是离线安装,便于在内网中重复安装;
- 配置基本用户root的密码,系统开机自动启动。
一、系统准备
1. 创建mysql用户
属于mysql用户组,用户主目录 /home/mysql
[root@localhost ems]# useradd -g mysql -d /home/ems mysql
[root@localhost ems]# passwd mysql
更改用户 mysql 的密码 。
新的 密码:
2. 创建基本目录
[mysql@localhost ~]$ mkdir data
[mysql@localhost ~]$ mkdir rpms
3.解压MySQL 5.6安装文件
将MySQL-5.6.35-1.el7.x86_64.rpm-bundle.tgz 拷到 /home/mysql/rpms下
[ems@localhost ~]$ tar -xf MySQL-5.6.35-1.el7.x86_64.rpm-bundle.tgz
[ems@localhost ~]$ ls rpms
MySQL-5.6.35-1.el7.x86_64.rpm-bundle.tar
MySQL-client-5.6.35-1.el7.x86_64.rpm
MySQL-devel-5.6.35-1.el7.x86_64.rpm
MySQL-embedded-5.6.35-1.el7.x86_64.rpm
MySQL-server-5.6.35-1.el7.x86_64.rpm
MySQL-shared-5.6.35-1.el7.x86_64.rpm
MySQL-shared-compat-5.6.35-1.el7.x86_64.rpm
MySQL-test-5.6.35-1.el7.x86_64.rpm
二、安装MySQL
1. 删除MariaDB
Mariadb数据库为Readhat Linux 7(或CentOS 7)默认安装的数据库,在安装mysql数据库前,先查看mariadb数据库是否安装,如果已经安装了,首先应该删除安装的mariadb数据库。
[root@localhost rpms]# rpm -qa|grep maria
mariadb-server-5.5.52-1.el7.x86_64
mariadb-libs-5.5.52-1.el7.x86_64
mariadb-5.5.52-1.el7.x86_64
依次进行删除
[root@localhost rpms]# yum remove mariadb-server-5.5.52-1.el7.x86_64
[root@localhost rpms]# yum remove mariadb-5.5.52-1.el7.x86_64
[root@localhost rpms]# yum remove mariadb-libs-5.5.52-1.el7.x86_64
2. 安装rpm包
[root@localhost rpms]# ls
MySQL-5.6.35-1.el7.x86_64.rpm-bundle.tar MySQL-server-5.6.35-1.el7.x86_64.rpm
MySQL-client-5.6.35-1.el7.x86_64.rpm MySQL-shared-5.6.35-1.el7.x86_64.rpm
MySQL-devel-5.6.35-1.el7.x86_64.rpm MySQL-shared-compat-5.6.35-1.el7.x86_64.rpm
MySQL-embedded-5.6.35-1.el7.x86_64.rpm MySQL-test-5.6.35-1.el7.x86_64.rpm
安装其中的的3个包,最重要的是 MySQL-server-5.6.35-1.el7.x86_64.rpm
[root@localhost rpms]# yum localinstall MySQL-server-5.6.35-1.el7.x86_64.rpm
已加载插件:fastestmirror, langpacks
正在检查 MySQL-server-5.6.35-1.el7.x86_64.rpm: MySQL-server-5.6.35-1.el7.x86_64
MySQL-server-5.6.35-1.el7.x86_64.rpm 将被安装
正在解决依赖关系
--正在检查事务
---软件包 MySQL-server.x86_64.0.5.6.35-1.el7 将被 安装
--解决依赖关系完成
……
已安装:
MySQL-server.x86_64 0:5.6.35-1.el7完毕!
初始安装后的MySQL各类文件位置如下:
可执行文件在 /usr/bin/ 和 /usr/sbin/
数据库文件在 /var/lib/mysql
初始配置文件在 /usr/my.cnf
3. 配置MySQL的数据主目录
将MySQL的数据目录移到/hoem/mysql/data下
[root@localhost data]# cp -r /var/lib/mysql /home/mysql/data
[root@localhost data]# chown -R mysql:mysql /home/mysql/data/mysql
4. 更改SElinux的权限
由于CentOS 7 采用了SElinux安全方案,会导致数据库系统运行时的诸多限制。比如,会出现下面无法创建子进程pid文件的情况:
[ems@localhost ~]$ service mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/home/mysql/data/mysql/localhost.localdomain.pid).
可将SElinux设为不可用:
[root@GHHIS run]# vi /etc/selinux/config
……
SELINUX=disabled
……
SELINUXTYPE=targeted
重启CentOS系统。
5. 拷贝并修改my.cnf
将/usr/my.cnf拷贝到/etc下,修改my.cnf,增加下面的内容:
[mysqld]
datadir=/home/mysql/data/mysql
socket=/home/mysql/data/mysql/mysql.sock
lower_case_table_names=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
socket=/home/mysql/data/mysql/mysql.sock
四、设置自启动
[root@localhost ~]# chkconfig mysql on
[root@localhost ~]# chkconfig --list|grep mysql
注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
欲查看对特定 target 启用的服务请执行
'systemctl list-dependencies [target]'。mysql 0:关 1:关 2:开 3:开 4:开 5:开 6:关
五、设置数据库
1. 设置初始root密码
如果安装后已经自动执行过数据库的初始化,则数据库会自动产生一个随机初始密码,在/root/.mysql_secret文件中
[root@localhost ~]# vi /root/.mysql_secret
# The random password set for the root user at Wed Apr 12 11:19:38 2017 (local time): MDDQ6OL_QHtfnw3x
以上代表初始的root密码是MDDQ6OL_QHtfnw3x。
如果未进行过数据库初始化,则不会产生/root/.mysql_secret文件,此时root的密码为空密码。
2. 登陆数据库
[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
3. 设置密码
将root的密码设为"H9000root",并使其他主机可以远程访问这台数据库:
mysql> set password for root@localhost= password("H9000root");
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to root@'%' identified by 'H9000root' with grant option;
Query OK, 0 rows affected (0.00 sec)
至此,安装完成。