背景
根据客户要求用系统自带的yum命令来安装MySQL 5.6,下面记录一下整个安装、配置过程。
CentOS 6.5 默认yum只能安装mysql 5.1
安装前要检查机器原来是否安装过mysql,如有安装需要先进行数据备份、清理。
[root@snails ~]# yum list installed | grep mysql
[root@snails ~]# ps -ef|grep mysql
[root@snails ~]# service mysqld stop
[root@snails ~]# rpm -e mysql-libs --nodeps
[root@snails ~]# yum -y remove mysql mysql-*
设置安装源
[root@snails ~]# wget http://repo.mysql.com/mysql57-community-release-el6-8.noarch.rpm
[root@snails ~]# rpm -ivh mysql57-community-release-el6-8.noarch.rpm
[root@snails ~]# ls -1 /etc/yum.repos.d/mysql-community*
[root@snails ~]# yum repolist all | grep mysql
[root@snails ~]# vi /etc/yum.repos.d/mysql-community.repo
### 将[mysql56-community]的enabled设置为1,[mysql57-community]的enabled设置为0 ###
[root@snails ~]# yum repolist enabled | grep mysql
mysql-connectors-community MySQL Connectors Community 21
mysql-tools-community MySQL Tools Community 37
mysql56-community MySQL 5.6 Community Server 265
注意:
如果不使用5.7 或者其他任何版本,只能有一个是 enabled=1的,其他的都得enabled=0。
安装MySQL
[root@snails ~]# yum -y install mysql-server mysql
修改默认配置
[root@snails ~]# mkdir /data/mysql
[root@snails ~]# vi /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/tmp/mysql.sock
启动服务
[root@snails ~]# service mysqld start
检查
[root@snails ~]# netstat -ano |grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN off (0.00/0/0)
修改root密码
[root@snails ~]# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("GIVE-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
贴上我目前运行的配置文件
[client]
port=3306
socket=/tmp/mysql.sock
[mysql]
default-character-set=utf8
[mysqld]
user=mysql
character-set-server=utf8
explicit_defaults_for_timestamp=true
#索引和数据缓冲区大小,一般设置物理内存的60%-70%
innodb_buffer_pool_size = 1G
#缓冲池实例个数,推荐设置4个或8个
innodb_buffer_pool_instances = 4
#关键参数,0代表大约每秒写入到日志并同步到磁盘,数据库故障会丢失1秒左右事务数据。1为每执行一条SQL后写入到日志并同步到磁盘,I/ O开销大,执行完SQL要等待日志读写,效率低。2代表只把日志写入到系统缓存区,再每秒同步到磁盘,效率很高,如果服务器故障,才会丢失事务数据。对数据安全性要求不是很高的推荐设置2,性能高,修改后效果明显。
innodb_flush_log_at_trx_commit = 2
#默认是共享表空间,共享表空间idbdata文件不断增大,影响一定的I/O性能。推荐开启独立表空间模式,每个表的索引和数据都存在自己独立的表空间中,可以实现单表在不同数据库中移动。
innodb_file_per_table = ON
#日志缓冲区大小,由于日志最长每秒钟刷新一次,所以一般不用超过16M
innodb_log_buffer_size = 8M
datadir=/data/mysql
socket=/tmp/mysql.sock
# 禁止MySQL对外部 连接进行DNS解析
skip-name-resolve
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid