我一直在尝试在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)
答案 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