CentOS 安装多个mysql实例

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

  1. 通过make install 编译source code

  2. 通过类似yum install mysql-server 或者 apt-get install mysql-server这样的系统commands

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

  • 远程登录服务端的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;
  • 防火墙开着,第一个问题解决了依然访问不了。

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

  • 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,可以远程访问了。



到此,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

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

CentOS 安装多个mysql实例_第1张图片

你可能感兴趣的:(mysql,centos,多实例)