用户目录下编译mysql源码,实现单主机安装多个mysql实例

Posted Xinxin_Brian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户目录下编译mysql源码,实现单主机安装多个mysql实例相关的知识,希望对你有一定的参考价值。

1.建立用于安装mysql的用户目录:useradd mysql_1; passwd mysql_1;

2.在没有mysql_1目录下建立文件夹setup: su - mysql_1; mkdir setup;

3.将下载下来的mysql源码解压之mysql_1用户中: cd setup; tar -zxvf mysql-5.7.22.tar.gz;

4.修改源码目录及文件权限,设置mysql_1下所有文件及文件夹owner: mysql_1:mysql_1
chown mysql_1.mysql_1 * -R

5.在mysql_1目录下创建必要的路径,包括配置文件路径~/etc,数据目录~/data

6.利用cmake进行编译(若无cmake需安装):

cmake -DCMAKE_INSTALL_PREFIX=/home/mysql_1/ 
-DMYSQL_DATADIR=/home/mysql_1/data
-DSYSCONFDIR=/home/mysql_1/etc
-DMYSQL_UNIX_ADDR=/home/mysql_1/bin/mysql1.sock 
-DWITH_MYISAM_STORAGE_ENGINE=1 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_MEMORY_STORAGE_ENGINE=1 
-DWITH_READLINE=1    
-DENABLED_LOCAL_INFILE=1 
-DWITH_PARTITION_STORAGE_ENGINE=1 
-DEXTRA_CHARSETS=all  

7.若出现boost版本不对的报错,需要安装匹配版本的boost。确保cmake无错误抛出。

例如需要的版本为1.59.0,则下载:

wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
创建目录/usr/local/boost,并将boost1.59.0压缩宝解压至该目录下,在cmake过程指定boost路径:

 1 cmake -DCMAKE_INSTALL_PREFIX=/home/mysql_1/ 
 2 -DMYSQL_DATADIR=/home/mysql_1/data 
 3 -DSYSCONFDIR=/home/mysql_1/etc 
 4 -DMYSQL_UNIX_ADDR=/home/mysql_1/bin/mysql1.sock  
 5 -DWITH_MYISAM_STORAGE_ENGINE=1  
 6 -DWITH_INNOBASE_STORAGE_ENGINE=1  
 7 -DWITH_MEMORY_STORAGE_ENGINE=1  
 8 -DWITH_READLINE=1     
 9 -DENABLED_LOCAL_INFILE=1  
10 -DWITH_PARTITION_STORAGE_ENGINE=1  
11 -DEXTRA_CHARSETS=all   
12 -DWITH_BOOST=/usr/local/boost

8. make install?安装mysql

9.将/etc/my.cnf拷贝至/home/mysql_1/etc目录下,自动义配置。例如:

 1 [mysqld]
 3 port= 6301
 4 bind_address= 192.168.0.156
 5 socket=/home/mysql_1/bin/mysqld1.sock
 6 datadir= /home/mysql_1/data
 7 log-error= /home/mysql_1/bin/log/mysqld1.log
 8 pid-file= /home/mysql_1/bin/mysql1.pid
 9 #innodb_data_home_dir= /home/mysql_1/data
10 #innodb_log_group_home_dir= /home/mysql_1/data/redo
11 basedir=/home/mysql_1
12 user=mysql_1
13 
14 #binlog
15 #server-id = 1
16 #log-bin= /home/mysql_1/data/binlog/mysql-bin
17 #binlog_format= ROW
18 #relay-log= /home/mysql_1/data/relaylog/relay-bin
19 
22 #tmpdir=/home/mysql_1/data/tmp
23 #secure-file-priv=
24 #gtid_mode= on
25 #enfore_gtid_consistency=on
26 #skip_name_resolve
28 
29 language = /home/mysql_1/share/english
30 

10.添加环境变量 /etc/profile:   export PATH=$PATH:/home/mysql_1/bin; source /etc/profile使其生效

11.运行mysqld: mysqld --defaults-file=/home/mysql_1/etc/my.cnf  &

注:若想指定配置文件启动mysql server进程(mysqld),首先将/etc/my.cnf拷贝至自定义/home/mysql_1/etc/my.cnf需要指定在mysqld启动时指定配置文件路径,且最后需要加上&符号,这样终端不会阻塞。否则终端启动mysqld之后会一直卡在那里。

12.查看log信息(位于mysql_1/bin/log下面),若能看到最后ready for connection| source distribution字样则为成功。若出现任何问题,注意是否配置文件文件出错

13.创建mysql 服务,这样以后可用通过mysql_service_name start/restart/stop等方式将mysql当作service来启停。

cp supports-file/mysql.service /etc/init.d/mysql_6301,
chkconfig --add mysql   chkconfig --level 2345 mysql on
因此,开启/重启/停止mysql可以用以下方式:mysql_6301 start/restart/stop

14.到此安装完成,mysql服务正常运行。

此时日志看不到任何异常,但是client可能依然连接不上:
执行mysql -uroot -p‘root‘==> Access denied.
原因:mysql可以连接,但是初始化密码不对。
解决方案:
service mysql_6301 stop
mysqld_safe --user=mysql_1 --skip-grant-tables --skip-networking &   (即跳过密码授权)
另开客户端,mysql -uroot mysql,就可以进来了。

查看user表:select user, host, password from mysql.user;

设置密码为root:update user set authentication_string=password(‘root‘) where User=‘root‘;
输入exit退出

启动mysql服务:service mysql start
mysql -u root -p‘root‘
成功进入mysql!!!

以上是关于用户目录下编译mysql源码,实现单主机安装多个mysql实例的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu下编译OpenHarmony

Ubuntu下编译OpenHarmony

Ubuntu下编译OpenHarmony

Ubuntu16.04下编译安装及运行单目ORBSLAM2

centos下编译安装MySQL5.7.16

Linux环境下编译安装Mysql