MySQL 數據遷移


一、導出數據庫:

1,進入MySQL目錄下的bin文件夾:cd MySQL中到bin文件夾的目錄

如我輸入的命令行:cd D:\Program Files\MySQL\MySQL Server 5.5\bin

(或者直接將windows的環境變量path中添加該目錄)

2,導出數據庫:mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名

如我輸入的命令行:mysqldump -u lmapp -p lmapp -P 3308 > lmapp.sql (輸入后會讓你輸入進入MySQL的密碼)

(如果導出單張表的話在數據庫名后面輸入表名即可)

mysql導出數據庫一個表
  mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名
  mysqldump -u lmapp -p lmapp users> test_users.sql (結尾沒有分號)

3、會看到文件news.sql自動生成到bin文件下

二、導入數據庫:

1,將要導入的*.sql放在某個路徑

2,同上面導出的第1步

3,進入MySQL:mysql -u 用戶名 -p,如命令行:mysql -u root -p (輸入同樣后會讓你輸入MySQL的密碼)

4,在MySQL中新建你要建的數據庫 如新建一個名為news的目標數據庫,如命令行:CREATE DATABASE news

5,輸入:mysql>use 目標數據庫名,如命令行:mysql>use news;

6,導入文件:mysql>source 導入的文件名,如命令行:mysql>source news.sql;

三、授權用戶訪問

輸入命令:
GRANT USAGE ON news.* TO 'username'@'%' IDENTIFIED BY 'password';

如果出現如下錯誤:
The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

解決辦法:

mysql> set global read_only=0;
(關掉新主庫的只讀屬性)

flush privileges;

set global read_only=1;(讀寫屬性)

flush privileges;

 

解釋:

set global read_only=0; 關閉只讀,可以讀寫
set global read_only=1; 開始只讀模式

 

 

常用命令

 

一、用戶授權


1、選擇數據表

語句如下:use mysql;

2、在mysql的user表中增加連接用戶帳號:

這里不要直接使用INSERT語句添加user記錄,使用INSERT可能出現:

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value錯誤。不過早期的MYSQL版本筆者倒沒出現這個錯誤,因為天緣一直都是直接修改user表或直接使用INSERT語句完成,后來升級 MYSQL到5.1的時候,發現可能會出現這個錯誤。

建議使用GRANT語句進行授權,語句如下:

GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

上句:

“username”替換為將要授權的用戶名,比如clientusr;

“password”替換為clientusr設置的密碼;

3、可訪問數據表授權

創建好帳戶之后,就開始給上面的common user進行數據表授權,步驟3中增加的連接用戶默認權限都是“N”的,必須在db表中為該帳戶授權,允許其訪問專用數據庫,當然超級用戶就不說了。

使用下面語句:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON yourdbname.tablename TO 'username'@'localhost' IDENTIFIED BY 'password';

本語句中的權限根據實際需要確定:

"tablename"替換為授權訪問的數據表table名

"username"是步驟2授權用戶名

"password"是步驟2授權用戶的設置密碼

這樣就為該用戶授予了對某數據表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP權限。

4、生效授權,創建完畢

一句話即可:FLUSH PRIVILEGES;


二、查看默認端口號

1、登錄mysql

[root@localhost ~]# mysql -uroot -p
Enter password: 輸入數據庫密碼;

2、使用show global variables like 'port'; 命令查看端口號,

 

三、啟動停止

啟動

service mysql start

 

停止

mysqladmin -p -u root shutdown

service mysql stop

 

四、查詢進程

ps -ef | grep mysqld

如果有mysqld_safe和mysqld兩個進程,說明MySQL服務當前在啟動狀態。

 

五、配置開機自啟動

配置啟動

chkconfig --add mysql

 

chkconfig mysqld on

 

查看開機自啟動的服務使用chkconfig命令

#chkconfig --list

或是只查看MySQL服務

 

#chkconfig --list mysqld

 

MySql命令行程序使用


1、登錄mysql

本地:mysql -u root -p, 回車后輸入密碼; 也可以p后不加空格,直接加密碼。回車就登錄了

遠程:mysql -hxx.xx.xx.xx -u -pxxx

2、查看數據庫:show databases;

3、連接數據庫:use db_name;

4、查看數據表:show tables;

5、查詢:select * from table_name where xxx and xxx;

6、當前選擇的數據庫:select database();

7、查詢mysql版本:select version();

8、當前時間:select now();或select current_timestamp();

9、打印年月日:SELECT DAY/MONTH/YEAR(CURRENT_DATE);

10、打印字符:SELECT "I'am danny.yao";

11、查看表結構:describe <表名>;

12、當前所有連接的詳細情況:show full processlist;(沒有full,只顯示前100個連接)

13、查看狀態:show status like '%下面變量%';

Aborted_clients 由於客戶沒有正確關閉連接已經死掉,已經放棄的連接數量。
Aborted_connects 嘗試已經失敗的MySQL服務器的連接的次數。
Connections 試圖連接MySQL服務器的次數。
Created_tmp_tables 當執行語句時,已經被創造了的隱含臨時表的數量。
Delayed_insert_threads 正在使用的延遲插入處理器線程的數量。
Delayed_writes 用INSERT DELAYED寫入的行數。
Delayed_errors 用INSERT DELAYED寫入的發生某些錯誤(可能重復鍵值)的行數。
Flush_commands 執行FLUSH命令的次數。
Handler_delete 請求從一張表中刪除行的次數。
Handler_read_first 請求讀入表中第一行的次數。
Handler_read_key 請求數字基於鍵讀行。
Handler_read_next 請求讀入基於一個鍵的一行的次數。
Handler_read_rnd 請求讀入基於一個固定位置的一行的次數。
Handler_update 請求更新表中一行的次數。
Handler_write 請求向表中插入一行的次數。
Key_blocks_used 用於關鍵字緩存的塊的數量。
Key_read_requests 請求從緩存讀入一個鍵值的次數。
Key_reads 從磁盤物理讀入一個鍵值的次數。
Key_write_requests 請求將一個關鍵字塊寫入緩存次數。
Key_writes 將一個鍵值塊物理寫入磁盤的次數。
Max_used_connections 同時使用的連接的最大數目。
Not_flushed_key_blocks 在鍵緩存中已經改變但是還沒被清空到磁盤上的鍵塊。
Not_flushed_delayed_rows 在INSERT DELAY隊列中等待寫入的行的數量。
Open_tables 打開表的數量。
Open_files 打開文件的數量。
Open_streams 打開流的數量(主要用於日志記載)
Opened_tables 已經打開的表的數量。
Questions 發往服務器的查詢的數量。
Slow_queries 要花超過long_query_time時間的查詢數量。
Threads_connected 當前打開的連接的數量。
Threads_running 不在睡眠的線程數量。
Uptime 服務器工作了多少秒。

14、看表注釋,字段注釋;

show create table table_name;
show full columns from table_name;
show table status;

 

 

15. 刪除表
方法1:delete from 表名;
方法2:truncate table 表名;
比  較:
     不帶where參數的delete語句可以刪除mysql表中所有內容,使用truncate table也可以清空mysql表中所有內容。
     效率上truncate比delete快,但truncate刪除后不記錄mysql日志,不可以恢復數據。
     delete的效果有點像將mysql表中所有記錄一條一條刪除到刪完,而truncate相當於保留mysql表的結構,重新創建了這個表,所有的狀態都相當於新表。


16. 表操作
復制表結構:create table table1 like table;
復制數據:insert into table1 select * from table

修改字段名稱命令
ALTER TABLE 表名 CHANGE 舊字段名 新字段名 新數據類型;
ALTER TABLE hotel_terminal CHANGE terminal_os terminal_os VARCHAR(200);

修改表結構
alter table competitor_goods add sku_id bigint(20) unsigned DEFAULT NULL COMMENT '商品銷售碼';

17. 查看表生成的DDL
show create table table_name;

 18.導出數據到csv

select org_info.org_id,org_info.org_name,lock_brand from hotel_room_card_pwd INNER JOIN org_info ON hotel_room_card_pwd.org_id=org_info.org_id INTO OUTFILE '/tmp/lock_brand.csv' CHARACTER SET utf8 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

導入導出數據報錯The MySQL server is running with the --secure-file-priv option解決辦法

1. 參數值對應限制。
mysql>SHOW VARIABLES LIKE "secure_file_priv";

secure_file_prive=null  不允許導入導出
secure_file_priv=/tmp/  限制導入導出只能發生在/tmp/目錄下
secure_file_priv=          允許導入導出

2. 查找mysql路徑
which mysql

3. 查看配置文件路徑
/usr/local/mysql/bin/mysql --verbose --help|grep -A 1 options
就會出現以下信息:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
服務器首先讀取的是/etc/my.cnf文件,如果前一個文件不存在則繼續讀/etc/mysql/my.cnf文件,如果還不存在依次向后查找。
比如我的在服務器上是 /etc/my.cnf

4. 修改配置文件
編輯/etc/my.cnf文件,在[mysqld]下添加條目:
secure_file_priv =
local-infile=0

5. 重啟mysql服務器即可
service mysql stop
service mysql start

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM