概述
mysql安装有很多种方式,有yum安装,编译安装、二进制安装等,本教程是二进制安装教程。本教程适用于5.6和5.7版本安装,因为很多linux系统自带mysql,所以在安装之前要删除旧的mysql文件,包括配置文件等。
例如,现在很多centos自带MariaDB
# 查看是否有安装
rpm -qa | grep mariadb
# 卸载,后面跟的是具体的名称
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps
为了确保删除干净,执行下面
# 卸载mariadb,同时也卸载了mariadb-server
yum remove mariadb
# 发现在安装mariadb时作为依赖项的mariadb-libs没有被删除。
yum list installed | grep mariadb
# 将其卸载
yum remove mariadb-libs
rm -rf /etc/my.cnf
# 删除所有包含mysql的文件(夹)
rm -rf $(find / -name mysql)
下载
https://downloads.mysql.com/archives/community/
libaio依赖库安装
MySQL 依赖于该libaio
库,所以需要先安装:
yum search libaio # search for info
yum install libaio # install library
libtinfo.so.5扩展
MySQL 5.6.37开始,mysql客户端依赖libtinfo.so.5扩展。
64位操作系统:查看下/lib64/
目录下是否有这个扩展,如果没有,则执行以下命令创建软链,libncurse5版本的应该都可以,5.6版本不一定非要
ln -s /lib64/libncurses.so.5.6 /lib64/libtinfo.so.5
32位操作系统:查看下/lib/
目录下是否有这个扩展,如果没有,则执行以下命令创建软链,libncurse5版本的应该都可以,5.6版本不一定非要
ln -s /lib/libncurses.so.5.6 /lib/libtinfo.so.
详细教程可以查看:https://dev.mysql.com/doc/refman/5.6/en/binary-installation.html
如果如上操作不行的话,可以考虑
yum install libncurses* -y
二进制安装
首先安装我们选择的是二进制安装方式,不选择编译安装,因为官方编译好的二进制已经是最优的编译了,没必要自己编译,然后下载二进制包就好了。
基本配置
然后创建/etc/mysql.cnf配置文件,写入以下最基础的配置,在这个位置配置有个好处,如果有多实例,可以共享配置。
[mysqld]
port = 3306
user = mysql
# 初始化数据库的时候,安装到指定目录,数据的目录最好是单独,好备份
datadir = /mydata/mysql_data
# 启动的时候可以用于排查错误,相对于数据库目录
log_error = error.log
然后执行以下命令,添加mysql组和不可登录的用户,通常mysql数据库的权限是mysql:mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
然后创建数据库目录
mkdir -p /mydata/mysql_data
# 数据库目录的权限需要是mysql
chown -R mysql:mysql /mydata/mysql_data
下载安装
然后解压下载好的安装包,解压到到/usr/local目录
cd /usr/local
tar zxvf /path/to/mysql-VERSION-OS.tar.gz
# 安装目录必须是root,防止被入侵修改
chown -R root:root /path/to/mysql-VERSION-OS
然后在/usr/local目录创建mysql软链,/usr/local/mysql目录是msyql.server、mysqld_multi等众多shell脚本默认的mysql安装目录,直接安装在这个目录的话,就不需要去修改这些脚本中的basedir配置值
ln -s full-path-to-mysql-VERSION-OS mysql
然后进入mysql目录
cd mysql
如果是MySQL5.7要执行这个步骤,如果是5.6,则跳过
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
初始化数据库
接下来初始化数据库,如果是5.6版本执行下面,默认密码为空,登录后设置一下密码:set password = password('03203511')
# 默认root账号没有密码
scripts/mysql_install_db --user=mysql
5.7版本初始化数据的两种方式,登录后设置一下密码:set password = '03203511';
# 默认root账号的密码在**error.log文件**里
bin/mysqld --initialize --user=mysql
# 或者跟5.6版本一样,为root账号创建空密码
bin/mysqld --initialize-insecure --user=mysql
ssl连接支持
如果是5.7版本安装,安装ssl连接支持(MySQL5.7要执行这个步骤,如果是5.6,则跳过),在/mydata/mysql_data数据目录下会多出*.pem的公密钥文件
,并且这些文件的所有者所属组是mysql,如果客户端需要ssl连接的话,需要将产生的client*.pem文件给到客户端
bin/mysql_ssl_rsa_setup
启动
现在就可以启动mysqld了,mysqld_safe shell脚本会管理mysqld进程,如果mysqld挂了,会自动启动,&标识后台方式启动
bin/mysqld_safe --user=mysql &
最后添加到服务即可
cp support-files/mysql.server /etc/init.d/mysql.server