ubuntu8.04~8.10安裝默認(rèn)的mysql,不能運(yùn)行mysql_install_db,不能使用mysqld_multi的罪魁是AppArmor,什么是AppArmor(
傳送門(mén)
),不能訪問(wèn)的出錯(cuò)結(jié)果是因?yàn)閍pparmor控制了對(duì)multi實(shí)例的數(shù)據(jù)目錄的訪問(wèn)權(quán)限
出錯(cuò)代碼:
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這個(gè)文件,可以看到默認(rèn)apt-get安裝的mysql對(duì)應(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 ,
修改完這個(gè)文件后sudo /etc/init.d/apparmor restart,重啟apparmor
繼續(xù)運(yùn)行 sudo mysql_install_db –datadir=/var/lib/mysql1 –no-defaults –user=mysql
這樣就能安裝mysql的系統(tǒng)數(shù)據(jù)文件到/var/lib/mysql1下面了
配置多個(gè)實(shí)例很簡(jiǎn)單:編輯/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
運(yùn)行sudo mysqld_multi start 1,2 –no-log,就能見(jiàn)到終端輸出正確的啟動(dòng)信息了
tcp ? ? ? ?0 ? ? ?0 *:3307 ? ? ? ? ? ? ? ? ?*:* ? ? ? ? ? ? ? ? ? ? LISTEN ? ??
tcp ? ? ? ?0 ? ? ?0 *:3308 ? ? ? ? ? ? ? ? ?*:* ? ? ? ? ? ? ? ? ? ? LISTEN
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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