基于CentOS 7.4进行安装,其他版本未测试
1. 下载MySQL安装包
# wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
2. 检查是否安装mariadb
检查是否安装过mariadb(Linux系统自带)
# rpm -qa | grep mariadb
若存在,则将其删除
# rpm -e --nodeps mariadb-libs-XXXXXXXX(具体版本号)
3. 创建mysql用户
# useradd mysql
若用户或组已存在,可删除后重新创建,或者凑合使用
创建没有mysql用户时,会自动创建mysql用户组;若未创建,可通过groupadd命令进行创建
4. 检查是否安装旧版mysql
检查是否安装过msyql
# rpm -qa | grep mysql
若存在,则将其删除(慎重!!!确保删除后无其他影响)
# rpm -e --nodeps mysql-libs-XXXXXXXX(具体版本号)
5.安装MySQL
- 解压安装文件,并移动到相应目录
# tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
# mv ./mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
- 为mysql创建data目录
# mkdir /usr/local/mysql/data
- 目录授权
# chown -R mysql:mysql /usr/local/mysql
# chmod -R 755 /usr/local/mysql
- 编译安装并初始化
# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
请保存结果中的密码,供登录及修改密码使用
...
2018-12-11T21:50:24.896645Z 1 [Note] A temporary password is generated for root@developer: gFamcspKm2+u
...
若安装过程遇到如下错误
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
执行如下命令安装完成后,再重新初始化即可(重新执行若报已存在错误,需删除/usr/local/mysql中的内容后重新执行)
# yum install libaio*
- 启动mysql服务
# /usr/local/mysql/support-files/mysql.server start
若启动报错,请查看报错日志并解决问题后重新启动
Starting MySQL. SUCCESS!
6. 创建软链接
# ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# ln -s /usr/local/mysql/bin/mysql /usr/bin
# service mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
7. 修改密码并允许远程登录
# mysql -u root -p
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> use mysql;
msyql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;
mysql> quit
8. 添加my.cnf
MySQL 5.7.24版本与之前版本有差异, mysql/support-files/中不存在my.cnf,需要自行创建
# vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
character-set-server=utf8
lower_case_table_names=1
default_storage_engine=InnoDB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
修改完成后重启mysql服务即可
# service mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
9. 设置开机启动
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
赋予可执行权限
# chmod +x /etc/init.d/mysqld
添加服务
# chkconfig --add mysqld
查询服务列表
# chkconfig --list
重启服务,即可查询是否自启动成功
# reboot
...
# ps -ef|grep mysql
root 8295 1 0 12:12 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/developer.pid
mysql 8472 8295 0 12:12 pts/0 00:00:06 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=developer.err --pid-file=/usr/local/mysql/data/developer.pid --port=3306
root 13950 6155 0 14:02 pts/0 00:00:00 grep --color=auto mysql