首先给第二个mysql建立一个数据目录,并把所有者给mysql用户
例如:
mkdir data2
chown mysql:mysql data2
然后在data2目录里,初始化数据库文件。
mysql_install_db --datadir=/XXX/data2 --user=mysql
执行结束后在data2目录下,会出现一些系统schema,如mysql,performance_schema。还有一个test schema
准备工作结束后,开始写配置文件,我的配置文件如下
[mysqld_multi]
#说白了还是调用mysqld_safe其服务,所以要指定其位置。
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
#[mysqld]原来的配置头后面要加个数字,启动时好识别配置的位置
[mysqld1]
server-id=3
log-bin=mysql-bin
replicate-do-db=c
read-only=1
lower_case_table_names=1
datadir = "XXX/data"
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
user=mysql
[mysqld2]
port = 3307
socket = "xxx/data2/mysql.sock2"
server-id=3
pid-file = "/xxx/data2/db2.pid"
datadir = "/xxx/data2"
user=mysql
配置改好后,就可以启动了
mysqld_multi start
1-2
1-2表示要启动的服务器,[mysqld]后面的数字。
这里要注意配置文件似乎要放到/etc/下才行,我以前放在/usr/下怎么也起不起来。
关闭的时候,使用mysqld_multi stop 1-2
可以用以下命令查看进程状态。
ps -aux|grep mysql
root 14819 0.5 0.0 106228 1392 pts/3 S 16:50 0:00 /bin/sh /usr/bin/mysqld_safe --server-id=3 --log-bin=mysql-bin --replicate-do-db=c --read-only=1 --log_bin_trust_function_creators=1 --lower_case_table_names=1 --datadir=/mnt/erp/programdata/data
--port=3306 --sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES --user=mysql
root 14826 0.2 0.0 106228 1388 pts/3 S 16:50 0:00 /bin/sh /usr/bin/mysqld_safe --port=3307 --socket=/data2/mysql.sock2 --server-id=3 --pid-file=//data2/db2.pid --datadir=//data2 --user=mysql
mysql 15133 9.5 5.5 1011800 448172 pts/3 Sl 16:50 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=//data2 --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --server-id=3 --log-error=//data2/SlaveDB.err --pid-file=//data2/db2.pid --socket=/data2/mysql.sock2
--port=3307
mysql 15180 10.5 5.6 1340840 454176 pts/3 Sl 16:50 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=//data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --server-id=3 --log-bin=mysql-bin --replicate-do-db=c --read-only=1 --log-bin-trust-function-creators=1
--lower-case-table-names=1 --sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES --log-error=//data/SlaveDB.err --pid-file=//data/SlaveDB.pid --port=3306
root 15233 0.0 0.0 103256 856 pts/3 S+ 16:50 0:00 grep mysql
其实就是从配置文件里读出参数,然后以命令行加一大段参数的方式启动mysql罢了。
无需配置文件,直接mysqld_safe也是一样的效果。
最后,新建的数据库需要连上去设root密码。
MySQL –u root -P3307的话,居然会连上老数据库。
这是因为,没有指定Socket文件
MySQL
–u root -P3307 -S xxx/data2/mysql.sock2
SET
PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
保存即可
话说,用下面的语句修改密码,改完后总是用新密码登不上去,不知道为什么。
UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';