centos7源代码安装mysql5.7_centos7源码安装mysql5.7+版本并实现多个实例

一、安装前准备工作

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值