ubuntu错误的多个实例mysql

时间:2013-10-04 08:16:14

标签: mysql ubuntu

我一直在尝试在ubuntu上创建多个mysql实例。这些是我遵循的步骤。

mv /etc/init.d/mysql /etc/init.d/mysql_mono.server
cp /usr/share/mysql/mysqld_multi.server /etc/init.d/mysql

使用您喜欢的文本编辑器,编辑/etc/init.d/mysql,然后找到以下行:

basedir=/usr/local/mysql
bindir=/usr/local/mysql/bin

改为:

basedir=/usr
bindir=/usr/bin

如果您在localhost中有root密码,请编辑文件/ usr / bin / mysqld_multi,然后找到以下行:

$opt_password = undef()

改为:

$opt_password = "password"

通过'root'@'localhost'密码更改“密码”。

现在为每个额外的mysqld实例创建一个数据库目录:

# cp -pr /var/lib/mysql /var/lib/mysql1
# cp -pr /var/lib/mysql /var/lib/mysql2

我的配置文件(my.cnf)是:

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0



[mysqld1]
user = root
pid-file = /var/run/mysqld1.pid
socket = /var/run/mysqld1.sock
port = 3301
datadir = /var/lib/mysql1
log = /var/log/mysql/mysql1.log
server-id = 1
log_bin = /var/log/mysql/mysql1-bin.log

[mysqld2]
user = root
pid-file = /var/run/mysqld2.pid
socket = /var/run/mysqld2.sock
port = 3302
datadir = /var/lib/mysql2
log = /var/log/mysql/mysql2.log
server-id = 2
log_bin = /var/log/mysql/mysql2-bin.log


# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit   = 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1

log_error                = /var/log/mysql/error.log


[mysqldump]
quick
quote-names
max_allowed_packet  = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer      = 16M


``!includedir /etc/mysql/conf.d/

当我运行以下命令时仍然出现此错误:

mysql --socket=/var/run/mysqld1.sock -uroot


ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld1.sock' (2)

1 个答案:

答案 0 :(得分:0)

通过http://dev.mysql.com/doc/refman/5.5/en/multiple-unix-servers.html

  

一种方法是在Unix上运行多个MySQL实例进行编译   不同的服务器具有不同的默认TCP / IP端口和Unix套接字   文件,以便每个人在不同的网络接口上侦听。   每个安装也在不同的基目录中编译   结果自动生成一个单独的,已编译的数据目录,日志   文件和每个服务器的PID文件位置。

     

假设现有的5.1服务器配置为默认值   TCP / IP端口号(3306)和Unix套接字文件(/tmp/mysql.sock)。至   配置新的5.5.35服务器以具有不同的操作参数,   使用类似这样的CMake命令:

shell> cmake . -DMYSQL_TCP_PORT=port_number \
             -DMYSQL_UNIX_ADDR=file_name \
             -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.35