CentOS 安装多个mysql实例

在CentOS或者就通常Linux版本而言, 安装mysql一般会采用两种方式:mysql

  1. 经过make install 编译source codesql

  2. 经过相似yum install mysql-server 或者 apt-get install mysql-server这样的系统commandsshell

其实归根揭底都是一个目的,安装成功,可以使用。无非编译源码,须要手动配置一些文件而已。然而,通常状况下在安装完mysql后都会遇到如下两个问题,不过解决起来也很easy。vim

  • 远程登陆服务端的mysql安全

    要远程登陆mysql,必须为登陆的用户受权.这样就须要先在服务端登陆mysql,废话少说,仍是直接用command说话,固然此处本人mysql用户名和密码:root/root服务器

  • mysql -h127.0.0.1 -uroot -proot
  • grant all privileges on *.* to root@"%" identified by "password" with grant option;
    flush privileges;
  • 防火墙开着,第一个问题解决了依然访问不了。微信

  • 针对这个问题,最直接的方法就是socket

  • service iptables stop

    然而在某些状况下,这个不该该称之为解决方法。由于防火墙自由它的用途不能由于某一个程序的访问而关掉整个服务器的防火墙,岂不是要下降Server端的安全性,那就只开放须要的端口呗。经过vi/vim编辑器打开位于/etc/sysconfig下的iptables文件,编辑下添加如下内容保存便可编辑器

  • -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 3306 -j ACCEPT
  • service iptables restart

    Ok,能够远程访问了。ide



到此,mysql算是安装完了。可是项目要求是多个mysql又穷的只有一台Server。怎么办?有人说技术不是问题,确实在某些状况下如此,世界如此之大,我等草民又怎么可能那么容易遇到一个史无前例的问题呢。办法以下两个:

  1. 采用了编译源码的人最可能选择的方法

    既然已经编译安装成功一个那就继续copy下source code folder,make install 完了后编辑mysql的配置文件my.cnf给指定个非3306的端口,再启动一个。看上去也很容易。what a pity!  时间是最难得的,须要的实例越多,编译的越多,伤不起。仍是看下下一个方法吧,懒人自由懒办法。

  2. 采用了懒办法,使用系统命令安装的人对应的办法

    首先找到mysql安装后位于/var/lib下的mysql文件夹。没错就是它,须要几个就复制几个,固然命名上仍是规范点利于本身的配置。此处举一下几个例子

  3. cp -r /var/lib/mysql /var/lib/mysql3307
    cp -r /var/lib/mysql /var/lib/mysql3308

        这里不得不提醒须要受权给mysql以上两个新文件夹的权限

chown -E mysql mysql3307
chown -R mysql mysql3308

        

接下来去编辑位于/etc下的my.cnf

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
#user       = mysql

[mysqld1]
socket     = /var/lib/mysql/mysql.sock
port       = 3306
pid-file   = /var/lib/mysql/mysql.pid
datadir    = /var/lib/mysql
user       = mysql

[mysqld2]
socket     = /var/lib/mysql3307/mysql.sock
port       = 3307
pid-file   = /var/lib/mysql3307/mysql.pid
datadir    = /var/lib/mysql3307
user       = mysql

[mysqld3]
socket     = /var/lib/mysql3308/mysql.sock
port       = 3308
pid-file   = /var/lib/mysql3308/mysql.pid
datadir    = /var/lib/mysql3308
user       = mysql

配置结束,启动全部mysql

mysqld_multi start

检测是否都启动了

mysqld_multi report

结果

mysql is running
mysql3307 is running
mysql3308 is running

大功告成,若是远程没法访问,照着文章开始那样对应着作就能够了。

Help

如有疑问可微信扫描下列二维码并关注留言

相关文章
相关标签/搜索