今天把數據服務器和業務服務器進行了分離,其中涉及對MySQL開放遠程訪問的,作出記錄如下以供備忘.
假設數據服務器IP地址為192.168.1.101,業務服務器IP地址為192.168.2.51,首先在數據服務器192.168.1.101上安裝好MySQL實例,然后使用root訪問MySQL并建立好所需要的數據庫和用戶,代碼如下:
- $ mysql -uroot -p
- Enter Password:
- > CREATE DATABASE business_db;
- > GRANT ALL PRIVILEGES ON `business_db`.* TO 'business'@'192.168.2.51' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
- > FLUSH PRIVILEGES;
這里以創建business_db數據庫為例,授權用戶為business,其中緊跟著@符號后面的是業務服務器的IP地址,這樣就指定了business用戶只能通過這個IP地址訪問遠程數據庫,后面的'mypassword'為你想設置的密碼.
對于已經存在的用戶我們可以通過下面的指令對遠程訪問主機進行更新,以user1為例,代碼如下:
- $ mysql -uroot -p
- Enter Password:
- > use mysql;
- > SELECT `host` FROM user WHERE user='user1';
- > UPDATE user SET host = '192.168.2.51' WHERE user ='user1';
- > FLUSH PRIVILEGES;
- > SELECT `host` FROM user WHERE user='user1';
大家可能注意到了這里指定了業務服務器192.168.2.51,實際上允許任何主機連接只需要將IP地址改為%即可,最后還需要修改MySQL綁定的IP地址,還是在我們的數據服務器上,修改配置文件/etc/mysql/my.cnf找到[mysqld]節的代碼如下:
- bind-address。
- [mysqld]
- #
- # * Basic Settings
- #
- ....
- # Instead of skip-networking the default is now to listen only on
- # localhost which is more compatible and is not less secure.
- bind-address = 192.168.1.101
最后不要忘記重新啟動一下MySQL守護進程:service mysql restart,現在讓我們回到業務服務器,接下來我們將數據從舊MySQL遷移到新的MySQL數據庫服務器上.
使用mysqldump命令導出數據庫,格式如下,請按實際要求對參數進行替換:
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名
比如導出數據庫business_db
mysqldump -uroot -p business_db > business_db.sql
然后將導出的備份文件business_db.sql復制到數據庫服務器192.168.1.101上,在數據庫服務器上用root登錄并使用source指令,代碼如下:
- $ mysql -uroot -p
- Enter Password:
- --Vevb.com
- > use business_db;
- > source ~/business_db.sql
這里~/business_db.sql是指定的路徑,具體為存放備份文件business_db.sql備份文件的路徑,對于業務服務器來說下面修改phpmyadmin的配置,讓其使用我們新的數據庫服務器,如果對phpmyadmin使用多個遠程數據庫管理感興趣的話可以在本站搜索哦.
修改位于phpmyadmin路徑下的配置文件libraries/config.default.php,代碼如下:
- /**
- * MySQL hostname or IP address
- *
- * @global string $cfg['Servers'][$i]['host']
- */
- $cfg['Servers'][$i]['host'] = '192.168.1.101'; // 數據庫服務器地址
當修改好所有使用MySQL的應用的配置文件后,我們可以讓舊服務器上的MySQL服務器光榮退休了:
service mysql stop
update-rc.d mysql disable
注意我這里只是將mysql停止并禁用,沒有卸載,主要考慮到后續運行的問題,如果要卸載直接使用apt-get remove --purge mysql就可以了.
新聞熱點
疑難解答