如何在不同端口的同一台机器上配置MySQL?

时间:2013-09-30 13:30:57

标签: mysql port my.cnf

如何在同一台机器上为MySQL配置两个不同的端口?我知道默认端口是3306.但我也想配置3307和3308.这可能吗?

目前的一个奖励问题;)

我们可以为不同的数据库分配不同的端口,还可以分别分配/创建凭据吗?

5 个答案:

答案 0 :(得分:8)

您可以使用--port=port_num选项。有关如何配置多个mysql实例的更多信息,请查看here

答案 1 :(得分:6)

你可以启动几个mysql实例:

mysqld_safe --defaults-file=/path/to/my.cnf1
mysqld_safe --defaults-file=/path/to/my.cnf2
mysqld_safe --defaults-file=/path/to/my.cnf3

并更改每个my.cnf的[mysqld]部分中的端口参数。

如果您只想拥有一个mysqld进程/数据库,可以使用端口重定向(使用linux):

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3307 -j REDIRECT --to-port 3306
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3308 -j REDIRECT --to-port 3306

答案 2 :(得分:4)

您可以复制/etc/mysql/my.cnf,更改其中的端口并将pathes更改为数据目录,因为我非常确定您不能在同一目录中提供超过1个mysql服务实例。

检查http://dev.mysql.com/doc/refman/5.1/en/multiple-servers.html

前:

cp /etc/mysql/my.cnf /etc/mysql/my-3307.cnf
//edit my-3307.cnf, for example
port = 3307
basedir = /var/lib/mysql-3307
datadir = /var/lib/mysql-3307
//end-edit
mysql_upgrade --defaults-file=/etc/mysql/my-3307.cnf #checks the syntax and creates the dirs you need.
#start mysqld
mysqld --defaults-file=/etc/mysql/my-3307.cnf

答案 3 :(得分:1)

到目前为止,{p> mysqld_multi是处理不同mysql实例的最佳方法。

一些更有用的提示:

  • mysqld_multi --example
  • 如果您收到奇怪的权限错误,请检查apparmor是否未阻止mysql访问/var/lib/mysql2

答案 4 :(得分:0)

我正在使用CentOS。 不是太简单,

  1. 修改文件 /etc/my.cnf ,搜索并更改或添加行:port = port_number
  2. semanage port -a -t mysqld_port_t -p tcp port_number
  3. 重启MySQL服务器。 service mysqld restart