一、安装前准备工作
1.1 检查 linux 系统版本[root@localhost ~]#cat /etc/system-release
1.2 检查是否安装了 mysql[root@localhost ~]# rpm -qa | grep mysql
[root@localhost ~]# rpm -e --nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64
若存在 mysql 安装文件,则会显示 mysql安装的版本信息
如:mysql-connector-odbc-5.2.5-6.el7.x86_64
卸载已安装的MySQL,卸载mysql命令,如下:
将/var/lib/mysql文件夹下的所有文件都删除干净。
细节注意:
检查一下系统是否存在 mariadb 数据库,如果有,一定要卸载掉,否则可能与 mysql 产生冲突。
系统安装模式的是最小安装,所以没有这个数据库。
检查是否安装了 mariadb,如果有就使劲卸载干净:[root@localhost ~]# rpm -qa | grep mariadb
[root@localhost ~]# systemctl stop mariadb
[root@localhost ~]# rpm -qa | grep mariadb
[root@localhost ~]# rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64
[root@localhost ~]# rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64
[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
1.3 系统内存检查
安装5.6以及以上版本的mysql需要服务器的内存至少在1G以上。
1.4 安装必要的软件包[root@localhost ~]# yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake
1.5 下载安装文件,下载源码版本,选择Source Code[root@localhost ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.7.23.tar.gz
二、安装
2.1 添加用户[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql mysql
2.2 创建安装目录[root@localhost ~]# mkdir -p /home/wwwroot/mysql
[root@localhost ~]# chown -R mysql:mysql /home/wwwroot/mysql
2.3 编译安装[root@localhost ~]# tar -zxvf mysql-5.7.23.tar.gz
[root@localhost ~]# cd mysql-5.7.23
[root@localhost ~]# cmake \
-DCMAKE_INSTALL_PREFIX=/home/wwwroot/mysql \
-DMYSQL_DATADIR=/home/wwwroot/mysql/data3306 \
-DSYSCONFDIR=/home/wwwroot/mysql/ \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/home/wwwroot/mysql/mysqld3306.sock\
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
[root@localhost ~]# make && make install
参数说明:
DCMAKE_INSTALL_PREFIX=/usr/local/mysql:安装路径
DMYSQL_DATADIR=/data/mysql:数据文件存放位置
DSYSCONFDIR=/etc:my.cnf路径
DWITH_MYISAM_STORAGE_ENGINE=1:支持MyIASM引擎
DWITH_INNOBASE_STORAGE_ENGINE=1:支持InnoDB引擎
DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock:连接数据库socket路径
DMYSQL_TCP_PORT=3306:端口
DENABLED_LOCAL_INFILE=1:允许从本地导入数据
DWITH_PARTITION_STORAGE_ENGINE=1:安装支持数据库分区
DEXTRA_CHARSETS=all:安装所有的字符集
DDEFAULT_CHARSET=utf8:默认字符
DWITH_EMBEDDED_SERVER=1:嵌入式服务器
2.4 第一种安装方式:每个端口的配置文件独立
2.4.1 添加配置文件,并初始化数据库,实例化两个端口
my3306.cnf[client]
port = 3306
socket = /home/wwwroot/mysql/mysql3306.sock
[mysqld]
basedir = /home/wwwroot/mysql
datadir = /home/wwwroot/mysql/data3306
port = 3306
socket = /home/wwwroot/mysql/mysql3306.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
my3307.cnf[client]
port = 3307
socket = /home/wwwroot/mysql/mysql3307.sock
[mysqld]
basedir = /home/wwwroot/mysql
datadir = /home/wwwroot/mysql/data3307
port = 3307
socket = /home/wwwroot/mysql/mysql3307.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \
--defaults-file=/home/wwwroot/mysql/my3306.cnf \
--user=mysql \
--basedir=/home/wwwroot/mysql \
--datadir=/home/wwwroot/mysql/data3306 \
--initialize-insecure
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \
--defaults-file=/home/wwwroot/mysql/my3307.cnf \
--user=mysql \
--basedir=/home/wwwroot/mysql \
--datadir=/home/wwwroot/mysql/data3307 \
--initialize-insecure
initialize-insecure#不需要密码
2.4.2 启动mysql后台运行[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_safe --defaults-extra-file=/home/wwwroot/mysql/my3306.cnf --user=mysql &
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_safe --defaults-extra-file=/home/wwwroot/mysql/my3307.cnf --user=mysql &
如果只是单例(一台服务器只运行一个端口),可以用下面的方式添加服务,拷贝服务脚本到init.d目录[root@localhost ~]# cp /home/wwwroot/mysql/support-files/mysql.server /etc/init.d/mysql
[root@localhost ~]# chkconfig mysql --add
[root@localhost ~]# chkconfig mysql on
[root@localhost ~]# service mysql start
[root@localhost ~]# service mysql restart
[root@localhost ~]# service mysql stop
2.4.5 进入3307端口的mysql,初始化root密码[root@localhost ~]# mysql -u root -p -S /home/wwwroot/mysql/mysql3307.sock
[root@localhost ~]# SET PASSWORD = PASSWORD('123456');
[root@localhost ~]# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
[root@localhost ~]# flush privileges;
建立软连接,不然mysql -uroot执行不了ln -s /home/wwwroot/mysql/bin/mysql /usr/bin
2.4.6 停止MYSQL实例,对应的sock文件[root@localhost ~]# /home/wwwroot/mysql/bin/mysqladmin -u root -p123456 -S /home/wwwroot/mysql/mysql3306.sock shutdown
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqladmin -u root -p123456 -S /home/wwwroot/mysql/mysql3307.sock shutdown
2.5 第二种安装方式:使用mysql自带的多实例
2.5.1 初始化数据库,使用同一个配置文件
my.cnf[mysqld_multi]
mysqld =/home/wwwroot/mysql/bin/mysqld_safe
mysqladmin=/home/wwwroot/mysql/bin/mysqladmin
log =/home/wwwroot/mysql/log/mysql_multi.log
user =xxx
password =xxx
[mysqld3306]
# 设置监听开放端口 [多实例中一定要不同]
port = 3306
# 设置运行用户
#user=mysql
basedir =/home/wwwroot/mysql
# 设置数据目录 [多实例中一定要不同]
datadir =/home/wwwroot/mysql/data3306
# 设置sock存放文件名 [多实例中一定要不同]
socket =/home/wwwroot/mysql/mysql3306.sock
#log-error =/home/wwwroot/mysql/log/mysql3306.log
pid-file =/home/wwwroot/mysql/mysql3306.pid
[mysqld3307]
port = 3307
#user=mysql
basedir =/home/wwwroot/mysql
datadir =/home/wwwroot/mysql/data3307
socket =/home/wwwroot/mysql/mysql3307.sock
#log-error =/home/wwwroot/mysql/log/mysql3307.log
pid-file =/home/wwwroot/mysql/mysql3307.pid
2.5.2 初始化数据库[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \
--defaults-file=/home/wwwroot/mysql/my.cnf \
--user=mysql \
--basedir=/home/wwwroot/mysql \
--datadir=/home/wwwroot/mysql/data3306 \
--initialize-insecure
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \
--defaults-file=/home/wwwroot/mysql/my.cnf \
--user=mysql \
--basedir=/home/wwwroot/mysql \
--datadir=/home/wwwroot/mysql/data3307 \
--initialize-insecure
2.5.3 启动mysql[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_multi --defaults-file=/home/wwwroot/mysql/my.cnf start
有可能会报错,需要执行下面的代码设置PATH[root@localhost ~]# vi /etc/profile
找到export PATH=段,加入:/home/wwwroot/mysql/bin
也可以使用[root@localhost ~]# cp /home/wwwroot/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
[root@localhost ~]# service mysqld_multi start 3306,3307
[root@localhost ~]# service mysqld_multi restart
[root@localhost ~]# service mysqld_multi stop
如果后面不加3306或者3307默认是对所有的实例进行操作,my.cnf中设置的mysqld_multi段中设置的用户密码在stop的时候会用到,因为是明文,所以需要修改启动脚本[root@localhost ~]# vi bin/mysqld_multi
修改
my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
为
my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
2.5.4 查看实例的运行状态[root@localhost ~]# service mysqld_multi report
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_multi report