ubuntu8.04~8.10安裝默認的mysql,不能運行mysql_install_db,不能使用mysqld_multi的罪魁是AppArmor,什么是AppArmor(
傳送門
),不能訪問的出錯結(jié)果是因為apparmor控制了對multi實例的數(shù)據(jù)目錄的訪問權(quán)限
出錯代碼:
Installing MySQL system tables...
100304 ? 22 : 34 : 18 ? [ Warning ] ?Can't create test file /var/lib/mysql1/PB.lower-test
100304 ? 22 : 34 : 18 ? [ Warning ] ?Can't create test file /var/lib/mysql1/PB.lower-test
ERROR:? 1005 ??Can't create table 'db'? ( errno:? 13 )
100304 ? 22 : 34 : 18 ? [ ERROR ] ?Aborting
解決辦法:
編輯/etc/apparmor.d/usr.sbin.mysqld這個文件,可以看到默認apt-get安裝的mysql對應(yīng)的數(shù)據(jù)目錄和日志以及socket,pid文件的權(quán)限都是存在的,如法炮制,修改配置文件如下:
?? / etc / mysql / conf.d / ?r,
?? / etc / mysql / conf.d /* ?r,
?? / etc / mysql / my.cnf r,
?? / usr / sbin / mysqld mr,
?? / usr / share / mysql /** ?r,
?? / var / log / mysql.log rw,
?? / var / log / mysql.err rw,
?? / var / lib / mysql / ?r,
?? / var / lib / mysql /** ?rwk,
?? / var / log / mysql / ?r,
?? / var / log / mysql /* ?rw,
?? / var / run / mysqld / mysqld.pid? w ,
?? / var / run / mysqld / mysqld.sock? w ,
?? / var / log / mysql1.log rw,
?? / var / log / mysql1.err rw,
?? / var / lib / mysql1 / ?r,
?? / var / lib / mysql1 /** ?rwk,
?? / var / log / mysql1 / ?r,
?? / var / log / mysql1 /* ?rw,
?? / var / run / mysqld / mysqld1.pid? w ,
?? / var / run / mysqld / mysqld1.sock? w ,
?? / var / log / mysql2.log rw,
?? / var / log / mysql2.err rw,
?? / var / lib / mysql2 / ?r,
?? / var / lib / mysql2 /** ?rwk,
?? / var / log / mysql2 / ?r,
?? / var / log / mysql2 /* ?rw,
?? / var / run / mysqld / mysqld2.pid? w ,
?? / var / run / mysqld / mysqld2.sock? w ,
修改完這個文件后sudo /etc/init.d/apparmor restart,重啟apparmor
繼續(xù)運行 sudo mysql_install_db –datadir=/var/lib/mysql1 –no-defaults –user=mysql
這樣就能安裝mysql的系統(tǒng)數(shù)據(jù)文件到/var/lib/mysql1下面了
配置多個實例很簡單:編輯/etc/mysql/my.cnf
mysqld ? = ?/usr/bin/mysqld_safe
mysqladmin ? = ?/usr/bin/mysqladmin
user ? = ?root
password ? = ?123
[ mysqld1 ]
pid-file ?? = ?/var/run/mysqld/mysqld1.pid
socket ? ?? = ?/var/run/mysqld/mysqld1.sock
port ? ?? = ?3306
datadir ??? = ?/var/lib/mysql1
user ? = ?mysql
log ? = ?/var/log/mysql1.log
[ mysqld2 ]
pid-file ?? = ?/var/run/mysqld/mysqld2.pid
socket ? ?? = ?/var/run/mysqld/mysqld2.sock
port ? ?? = ?3307
datadir ??? = ?/var/lib/mysql2
user ? = ?mysql
log ? = ?/var/log/mysql2.log
運行sudo mysqld_multi start 1,2 –no-log,就能見到終端輸出正確的啟動信息了
tcp ? ? ? ?0 ? ? ?0 *:3307 ? ? ? ? ? ? ? ? ?*:* ? ? ? ? ? ? ? ? ? ? LISTEN ? ??
tcp ? ? ? ?0 ? ? ?0 *:3308 ? ? ? ? ? ? ? ? ?*:* ? ? ? ? ? ? ? ? ? ? LISTEN
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
