MySQL的導入導出
1 導出
1.1 導出腳本和數據
MySQL的導出是利用MySQL安裝目錄的bin目錄下的mysqldump指令來進行的,該命令需要在Windows的cmd命令窗口執行。語法如下:
mysqldump –uusername –ppassword database_name > export_path
如:
mysqldump –uroot –p123 test > D:\\test.sql
如果需要指定導出文件的編碼則可以通過參數--default-character-set來指定,如:
mysqldump –uroot –p123 test > D:\\test.sql --default-character-set=utf8
1.2 只導出腳本
上述腳本會連目標庫裏面的數據一起導出來,但有時候我們可能並不需要導出其中的數據,這個時候我們可以加上參數--no-data。(注意no前面是有兩個橫槓的)。如:
mysqldump --no-data -uroot -p123 test > D:\\test.sql
1.3 遠程導出
有時候我們可能想導出的數據庫不是本地的,這個時候我們可以加上參數-h來指定要導出的數據庫所在的主機,以及在使用非默認端口(3306)時通過參數-P(大寫)指定對應的端口。如:
mysqldump -uroot -p123 -h10.10.10.3 -P3306 test > D:\\test.sql
需要注意的是MySQL默認只允許訪問本機的數據庫,如果需要訪問遠程的MySQL,那麼遠程的MySQL應當開放指定IP訪問的權限。如:
grant all privileges on *.* to ‘root’@’10.10.10.3’ identified by ‘123’ with grant option;
也可以把IP換成百分號“%”,表示所有的IP都允許訪問,如:
grant all privileges on *.* to ‘root’@’%’ identified by ‘123’ with grant option;
也可以使用如下形式,表示只允許IP以“10.10.10”開始的進行訪問,如:
grant all privileges on *.* to ‘root’@’10.10.10.%’ identified by ‘123’ with grant option;
grant指令是需要在MySQL命令窗口執行的,其標準語法如下所示:
grant [privilege1,privilege2] on database_name.table_name to ‘username’@’client_host’ identified by ‘password’ [with grant option];
其表示將某個數據庫的某個表的某權限賦予給來自某客戶端的某用戶,“all privileges”表示將授予所有的權限,“with grant option”表示其是否可以將自身的權限授予他人。如果我們只想授予某用戶對某表的select權限,則可以使用如下語句:
grant select on database_name.* to ‘username’@’client_host’ identified by ‘password’;
2 導入
導入是在登錄以後,在MySQL的命令窗口使用source指令來進行的,語法如下:
source import_path
如:
source D:\\test.sql
如果需要指定導入的編碼則可以通過參數--default-character-set來指定。
此外需要注意的是導入必須指定將要導入的數據庫,也就是說在執行source導入之前,必須通過use database_name切換到要導入的數據庫。
2.1 導入遠程數據庫
本地導入的話我們可以直接打開MySQL的命令窗口登錄數據庫進行導入,當然也可以在Windows的cmd命令窗口通過mysql指令來登錄到MySQL,mysql指令也是在MySQL安裝目錄下的bin目錄下,其語法如下:
mysql -uusername -ppassword
如:
mysql -uroot -p123
但如果需要導入到遠程數據庫的話,那麼首先我們應當登錄到遠程數據庫,登錄到遠程數據庫的語法是使用mysql指令,但是通過-h參數來指定要登錄的遠程主機,通過-P(大寫)來指定對應的端口。如:
mysql -uroot -p123 -h10.10.10.3 -P3306
之後我們就可以像上面那樣進行導入了。
需要注意的是遠程導入時,也需要有通過本地客戶端的mysql指令登錄遠程數據庫的權限,也就是說也需要像導出那樣使用grant指令授予對應的權限。