一、導出數據庫:
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