1、关闭SELINUX
[root@localhost ~]# vi /etc/selinux/config
设置SELINUX=disbaled
然后重启服务器。
[root@localhost ~]#reboot
这里需要关闭SELINUX,因为当SELINUX不关闭时,iptables不读取配置文件。
2、检查是否安装mysql服务
[root@localhost ~]# rpm -qa | grep mysql
mysql-libs-5.1.71-1.el6.x86_64
在centos7下该命令换成:
[root@localhost ~]# rpm -qa | grep mariadb
mysql-libs 是 MySQL 的必要包,如果有检查出已安装mysql的话可通过rpm -e mysql命令来卸载掉
3、修改防火墙设置,打开 3306 端口
[root@localhost ~]# vi /etc/sysconfig/iptables
添加一行: -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
重启防火墙:
[root@localhost ~]# service iptables restart
在centos7下默认的防火墙机制是采用firewall。使用如下命令添加3306端口:
添加
firewall-cmd --zone=public --add-port=3306/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=3306/tcp
删除
firewall-cmd --zone= public --remove-port=3306/tcp --permanent
4、基础数据配置
新增 mysql 用户组:
[root@localhost ~]# groupadd mysql
新增 mysql 用户,并添加到 mysql 用户组:
[root@localhost ~]# useradd -r -g mysql mysql
新建 MySQL 执行文件目录(后面会把编译好的 mysql 程序安装到这个目录):
[root@localhost ~]# mkdir -p /usr/local/mysql
新建 MySQL 数据库数据文件目录:
[root@localhost ~]# mkdir -p /home/mysql/data
[root@localhost ~]# mkdir -p /home/mysql/logs
[root@localhost ~]# mkdir -p /home/mysql/temp
5、增加 PATH 环境变量搜索路径:
[root@localhost ~]# vi /etc/profilea
##在 profile 文件末尾增加两行
# mysql env param
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
使 PATH 搜索路径立即生效:
[root@localhost ~]# source /etc/profile
6、安装编译 MySQL 需要的依赖包:
(mysql 从 5.5 版本开始,不再使用./configure 编译,而是使用 cmake 编译器,具体的
cmake 编译参数可以参考 mysql 官网文档
http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html,安装基
本依赖包,先用 yum 安装 cmake、automake 、autoconf ,另 MySQL 5.5.x 需要最少安装的
包有:bison,gcc、gcc-c++、ncurses-devel):
[root@localhost]# yum install make cmake gcc gcc-c++ bison bison-devel ncurses ncurses-devel autoconf automake
7、下载mysql源码
http://mirrors.sohu.com/mysql/MySQL-5.5/
http://mirrors.sohu.com/mysql/MySQL-5.6/
http://mirrors.sohu.com/mysql/MySQL-5.7/
进入/usr/local/src 目录,上传 mysql-5.6.26.tar.gz 源代码到/usr/local/src 目录:
[root@localhost src]# cd /usr/local/src
8、开始编译安装 mysql-5.6.26:
解压缩源码包:
[root@localhost src]# tar -zxvf mysql-5.6.26.tar.gz
进入解压缩源码目录:
[root@localhost src]# cd mysql-5.6.26
使用 cmake 源码安装 mysql
[root@localhost mysql-5.6.26]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1
上面的这些复制完,回车,然后就开始 cmake 的过程
配置解释:
-DCMAKE_INSTALL_PREFIX=a/usr/local/mysql 设置安装目录
-DMYSQL_DATADIR=/home/mysql/data 设置数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock 设置 UNIX socket 目录
-DMYSQL_USER=mysql 设置运行用户
-DDEFAULT_CHARSET=utf8 设置默认字符集,默认 latin1
-DEFAULT_COLLATION=utf8_general_ci 设置默认校对规则,默认 latin1_general_ci
-DWITH_INNOBASE_STORAGE_ENGINE=1 添加 InnoDB 引擎支持
-DENABLE_DOWNLOADS=1 自动下载可选文件,比如自动下载谷歌的测试包
-DMYSQL_TCP_PORT=3306 设置服务器监听端口,默认 3306
-DSYSCONFDIR=/etc 设置 my.cnf 所在目录,默认为安装目录)
9、cmake 结束后开始编译源码,这一步时间会较长,请耐心等待:
[root@localhost mysql-5.6.26]# make
10、安装编译好的程序:
[root@localhost mysql-5.6.26]# make install
(注意:如果需要重装 mysql,在/usr/local/src/mysql-5.6.26 在执行下 make install 就可以了,不需要再 cmake 和 make)
11、清除安装临时文件:
[root@localhost mysql-5.6.26]# make clean
12、修改 mysql 目录拥有者为 mysql 用户:
[root@localhost mysql-5.6.26]# chown -Rf mysql:mysql /usr/local/mysql
[root@localhost mysql-5.6.26]# chown -Rf mysql:mysql /home/mysql
13、进入 mysql 执行程序的安装路径:
[root@localhost mysql-5.6.26]# cd /usr/local/mysql
14、执行初始化配置脚本,创建系统自带的数据库和表
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
15、初始化脚本在/usr/local/mysql/下生成了配置文件 my.cnf
# ls -lah
需要更改该配置文件的所有者:
[root@localhost mysql] # chown -Rf mysql:mysql /usr/local/mysql/my.cnf
16、注意:
(1)Tips:在启动 MySQL 服务时,会按照一定次序搜索 my.cnf,先在/etc 目录下找,找不
到则会搜索 mysql 程序目录下是否有 my.cnf
(2)需要注意 CentOS 6 版操作系统的最小安装完成后,即使没有安装 mysql,在/etc 目录
下也会存在一个 my.cnf 文件,建议将此文件更名为其他的名字,否则该文件会干扰源码安
装的 MySQL 的正确配置,造成无法启动。修改/etc/my.cnf 操作如下:
可以:mv /etc/my.cnf /etc/my.cnf.bak
也可以:删除掉/etc/my.cnf 这个文件:rm /etc/my.cnf
如果你需要用于生产环境,不要急着做下面的 mysql 启动操作。建议把上一步骤中 mysql 初
始化生成的/usr/local/mysql/my.cnf 删除,然后把你优化好的 mysql 配置文件 my.cnf 放到/etc
下。
17、编辑/etc/my.cnf:
[root@localhost etc]# vi my.cnf
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
skip-external-locking
skip-name-resolve
user = mysql
port = 3306
basedir = /usr/local/mysql
datadir = /home/mysql/data
tmpdir = /home/mysql/temp
# server_id = .....
socket = /usr/local/mysql/mysql.sock
log-error = /home/mysql/logs/mysql_error.log
pid-file = /home/mysql/mysql.pid
open_files_limit = 10240
back_log = 600
max_connections=500
max_connect_errors = 6000
wait_timeout=605800
#open_tables = 600
#table_cache = 650
#opened_tables = 630
max_allowed_packet = 32M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 300
query_cache_type = 1
query_cache_size = 256M
query_cache_limit = 2M
query_cache_min_res_unit = 16k
tmp_table_size = 256M
max_heap_table_size = 256M
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
lower_case_table_names=1
default-storage-engine = INNODB
innodb_buffer_pool_size = 2G
innodb_log_buffer_size = 32M
innodb_log_file_size = 128M
innodb_flush_method = O_DIRECT
#####################
thread_concurrency = 32
long_query_time= 2
slow-query-log = on
slow-query-log-file = /home/mysql/logs/mysql-slow.log
[mysqldump]
quick
max_allowed_packet = 32M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
18、复制服务启动脚本:
[root@localhost etc]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
19、启动 MySQL 服务:
[root@localhost etc]# service mysql start
(初次启动会在/usr/local/mysql 目录下生成 mysql.sock 文件)
20、设置 MySQL 开机自动启动服务:
[root@localhost etc]# chkconfig mysql on
设置 MySQL 数据库 root 用户的本地登录密码(初始用户没有密码):
[root@localhost etc]# mysqladmin -u root password '123456'
23、登录并修改 MySQL 用户 root 的密码:
修改 root 用户密码:
允许 root 远程登录,设置远程登录密码:123456
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;