编译安装mysql5.6
一.环境准备
- centos7.X系统
- 已配置yum源
- 已上传mysql5.6安装包
mysql5.6安装包下载
二.安装步骤
1. 清除mariadb并安装cmake工具
[root@mysql ~]# yum remove -y mariadb-libs
[root@mysql ~]# yum install -y cmake # 编译安装工具
2. 创建mysql用户
[root@mysql ~]# useradd -s /sbin/nologin -M -r mysql
-s 不允许登录
-M 不创建家目录
-r 系统用户 UID小于1000
3. 创建数据目录并授权
[root@mysql ~]# mkdir -p /data/mysql
[root@mysql ~]# chown mysql.mysql /data/mysql/ -R
#把属主改为mysql 就可以有读写执行权限
4. 解压,预编译
- 指定安装路径
- 指定字符集 防止乱码
- 开关 本地文件
[root@mysql ~]# tar xvf mysql-5.6.22.tar.gz
[root@mysql ~]# cd mysql-5.6.22
[root@mysql mysql-5.6.22]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.6 \
-DMYSQL_DATADIR=/data/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1
5.安装一些依赖软件
- 没有编译器就会报错 进行编译必须安装gcc编译器
[root@mysql mysql-5.6.22]# yum -y install gcc gcc-c++
- 安装 ncurses-devel
[root@mysql mysql-5.6.22]# yum -y install ncurses-devel
- 总结:预编译前需要安装两个应用 否则会编译失败 yum -y install gcc gcc-c++ ncurses-devel
编译失败需要删除安装目录下的CMakeCache.txt文件再重新安装
6. 编译,安装
- 先 make(如果有俩个CPU就make -j2) && 然后 make install
[root@mysql mysql-5.6.22]# make
[root@mysql mysql-5.6.22]# make install
7. 制作软链接 如果装有多个版本就很有必要 方便管理(非必须)
- 方法一:制作软连接
[root@mysql mysql-5.6.22]# ln -s /usr/local/mysql5.6 /usr/local/mysql
- 方法二:把/usr/local/mysql5.6/做成系统命令(做成环境变量)
[root@mysql mysql-5.6.22]# vim /etc/profile.d/mysql.sh
export PATH=$PATh:/usr/local/mysql5.6/bin
[root@mysql mysql-5.6.22]# . /etc/profile.d/mysql.sh
注意:完成所有配置后才启动
如果按任意方法操作,只需要执行mysqld_safe & 即可在后台启动mysql (&:表示在后台启动)。
[root@mysql mysql-5.6.22]# mysql_safe &
如果没有按照这两种方法操作,需要带上绝对路径执行:
[root@mysql mysql-5.6.22]# /usr/local/mysql/bin/mysqld_safe &
- 安装完成后查看
[root@mysql mysql-5.6.22]# ls /usr/local/mysql5.6/
bin COPYING data docs include INSTALL-BINARY lib man my.cnf my-new.cnf mysql-test README scripts share sql-bench support-files
8.首先安装Perl依赖,然后初始化,生成数据库运行服务所需要的的必要的文件 库、表…
- 安装依赖,否则初始化会报错
[root@mysql mysql-5.6.22]# yum search Dumper #查看依赖包
[root@mysql mysql-5.6.22]# yum -y install perl-Data-Dumper
- 初始化
[root@mysql mysql-5.6.22]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql5.6
- 初始化完成后查看 /data/mysql 必须要有mysql目录
[root@mysql mysql-5.6.22]# ls /data/mysql/
auto.cnf db1 ibdata1 ib_logfile0 ib_logfile1 mysql mysql.err mysql.pid performance_schema shiyan.err test
9.创建配置文件并启动服务
- mysql默认配置文件 /etc/my.cnf
[root@mysql mysql-5.6.22]# cd /usr/local/mysql5.6/
# 覆盖原有的配置文件 原有的可能有错误
[root@mysql mysql-5.6.22]# cp support-files/my-default.cnf /etc/my.cnf
#当前路径启动mysql
[root@mysql mysql5.6]# ./bin/mysqld_safe &
10.查看MySQL是否启动
- 已经启动成功
[root@mysql mysql5.6]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 927/sshd
tcp6 0 0 :::22 :::* LISTEN 927/sshd
tcp6 0 0 :::3306 :::* LISTEN 1433/mysqld
- 停止mysql
[root@mysql mysql5.6]# pkill mysqld
11.登录MySQL
- 初始安装的mysql没有登录密码,只需要指定初始用户登录
[root@mysql mysql5.6]# mysql -uroot -p
mysql
常用选项:
-u 用户
-p密码
-h 远程服务器地址
-P 端口
-S 套接字文件
- 给root用户设置密码
[root@mysql mysql5.6]# mysqladmin -u root password
New password: 123456
Confirm new password: 123456
三.配置systemd启动mysql
- 对于支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。
- 编译安装的mysql默认是没有添加到systemd启动的,所以需要自己进行配置。
- 配置systemd管理,可以更加方便的控制服务的启停。
可以参考yum安装的mysql的启动文件进行配置,文件内容如下:
[root@mysql mysql5.6]# vim /usr/lib/systemd/system/mysqld.service
#
# /etc/systemd/system/mysql.service
#
# to make needed changes.
#
# systemd-delta can be used to check differences between the two mysql.service files.
#
[Unit]
Description=MySQL Community Server
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
Alias=mysql.service
[Service]
User=mysql
Group=mysql
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables etc.
#ExecStartPre=/usr/bin/mysql-systemd-start pre
# Start main service
ExecStart=/usr/local/mysql5.6/bin/mysqld_safe --defaults-file=/etc/my.cnf
# Don't signal startup success before a ping works
#ExecStartPost=/usr/bin/mysql-systemd-start post
# Give up if ping don't get an answer
TimeoutSec=600
Restart=always
PrivateTmp=false
- ExecStart=/usr/local/mysql5.6/bin/mysqld_safe # 修改此项,指定为自己的路径
- –defaults-file=/etc/my.cnf # 指定配置文件
重新载入 systemd,扫描新的或有变动的单元:
[root@mysql mysql5.6]# systemctl daemon-reload
管理:
[root@mysql mysql5.6]# systemctl start mysqld # 启动
[root@mysql mysql5.6]# systemctl stop mysqld # 停止
[root@mysql mysql5.6]# systemctl enable mysqld # 开机自启
[root@mysql mysql5.6]# systemctl disable mysqld # 取消开机自启