首先給第二個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';