標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) FI (57) File Transfer (1) Firefox (2) FM (2) fourjs (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (3) JavaScript (22) jQuery (6) JSON (1) K3b (1) LED (3) Linux (112) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) Oracle (125) Outlook (3) PDF (6) Perl (59) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (1) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (22) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (33) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) youtube (1) yum (2)

2014年4月1日 星期二

MySQL 指令、語法及管理

http://itgroup.blueshop.com.tw/towns/hc?n=convew&i=153


============================================================================================

1、設定管理帳號:(mysql在安裝後,會建立一個root帳號,不過,沒有密碼)
mysqladmin -u root password abc123 <==設定root帳號,密碼為abc123
============================================================================================
2、列出mysql現行環境
mysqladmin variables -u root -p <==使用指令
mysql>show variables; <==使用mysql語法
============================================================================================
3、登入資料庫
mysql -u root -p towns <==使用root帳號,登入towns資料庫
mysql -h localhost -u root -p towns <==使用root帳號登入本機端的towns資料庫, 做網路管理時,-h很重要
============================================================================================
4、建立資料庫
4.1 mysql -u root -p <==使用root登入mysql
4.2 打入root密碼
4.3 create database towns; <==使用mysql語法,新增towns這個資料庫,“;”一定要加
4.4 mysqladmin -u root create cacti -p <==也可以用指令建立資料庫
============================================================================================
5、刪除資料庫
5.1 mysql -u root -p <==使用root登入mysql
5.2 打入root密碼
5.3 drop database towns; <==使用mysql語法,刪除towns這個資料庫,“;”一定要加
============================================================================================
6、列出現有資料庫
6.1 mysql -u root -p <==使用root登入mysql
6.2 打入root密碼
6.3 show databases;
6.4 mysql -e "show databases; " -p <==用指令顯示資料庫
6.5
------------------------------------------------------------------------------------------------------------------------------------
6.1 mysqlshow -u root -p <==使用root登入mysql,並列出所有的資料庫
6.2 mysqlshow -u root -p towns <==使用root登入mysql,並列towns資料庫中的資料表
6.3 mysqlshow -u root -p towns towns <==使用root登入mysql,指定towns資料庫,並列出towns資料表
資料來源:http://tsuozoe.pixnet.net/blog/post/21283890
============================================================================================
7、匯入資料庫
7.1 需先建立資料庫(如4),可以看一下,dump下來的語法中,是否有下CREATE DATABASE,有就不用建了
7.2 mysql -u root -p abc <'/home/towns/abc/abc.sql' <==將abc.sql匯入abc資料庫中
7.3 如語法中,有下CREATE DATABASE,有就不用建了
7.4. mysql -u root -p <'/home/towns/abc/abc.sql' <==將abc.sql匯入資料庫中(必需有CREATE DATABASE)
============================================================================================
8、匯出資料庫
8.1 資料庫需存在
8.2 mysqldump -u root -p abc >'/home/towns/abc/abc.sql' <==將abc資料庫匯出到abc.sql檔案
8.3 mysqldump -u root -p -d abc > '/home/towns/abc/abc.sql' <==將abc資料庫的結構匯出到abc.sql檔案
============================================================================================
9、新增使用者(需先登入mysql server)
9.1 使用grant新增
 9.1.1 grant all on abc.* to towns identified by 'abc123' with grant option;
 建立towns使用者具有abc完整的管理權,密碼為abc123
 9.1.2 grant all on abc.* to towns@localhost identified by 'abc123' with grant option;
 建立本機端towns使用者具有abc完整的管理權,密碼為abc123
 9.1.3 grant all on *.* to towns@localhost identified by 'abc123' with grant option;
 建立本機端towns使用者具有所有資料庫完整的管理權,密碼為abc123
 9.1.3.1 grant all on *.* to towns@localhost identified by 'abc123';
 與上面的方法相同,獨缺“允許特權”
9.2 使用INSERT
9.3 CREATE USER
--------------------------------------------------------------------------------------------
9.4 變更密碼
9.4.1 grant all on *.* to towns@localhost identified by '123abc' with grant option;
將towns使用者的密碼,由abc123變成123abc
9.4.2 SET PASSWORD FOR 'root'@'localhost.localdomain' = PASSWORD( '*******' )
      SET PASSWORD FOR 'root'@'localhost' = PASSWORD( '*******' )
============================================================================================
10、刪除使用者
10.1 DELETE FROM mysql.user WHERE User='towns' ;
刪除使用者towns
10.2 DROP USER test@localhost;
============================================================================================
11、登入資料庫帳號、密碼常見檔案位置
============================================================================================
12、更新資料庫資料(在做任何更動後,建議要使用這指令)
12.1 flush privileges;
============================================================================================
13、在作業系統中,檢查權限之命令
13.1 mysqlaccess localhost user mysql -U root -P abc123 <==檢查user帳號的權限
13.2 mysqlaccess localhost towns abc123 -U root -P abc123 <==檢查towns帳號的權限
13.3 mysqlaccess localhost towns -U root -P <==檢查towns帳號的權限,會要求打入root 密碼
============================================================================================
14、權限管理
14.1 grant SELECT,INSERT,UPDATE on abc.* to towns@localhost identified by 'abc123';
開放三種權限(SELECT,INSERT,UPDAT)給towns(本機端)
14.2 開放多個資料庫(abc1、test、abc)給一個帳號(towns)管理,需一條一條加
grant all on abc1.* to towns@localhost identified by 'abc123';
grant all on test.* to towns@localhost identified by 'abc123';
grant all on abc.* to towns@localhost identified by 'abc123';
--------------------------------------------------------------------------------------------
14.3 權限
資料庫(DateBase),十五種權限:
ALL PRIVILEGES、ALTER、CREATE、DELETE、DROP、FILE、INDEX、INSERT、PROCESS、REFERENCES、RELOAD、SELECT、SHUTDOWN、UPDATE、USAGE
資料表(Table),八種權限:
SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER
資料欄(column),三種權限:
SELECT INSERT UPDATE
修改權限
14.4 REVOKE 權限 ON 資料庫(或資料表TABLE) TO user@host IDENTIFIED BY '密碼';
============================================================================================
GRANT ALL PRIVILEGES ON `abc` . * TO abc@% WITH GRANT OPTION ;
DROP USER towns@';
DROP USER test@localhost';
---------------------------------------------------------------------------------------------
CREATE USER test@localhost IDENTIFIED BY '********';
GRANT USAGE ON * . * TO test@localhost IDENTIFIED BY '********' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
SET PASSWORD FOR root@localhost = PASSWORD( '*********' ) <==在資料庫中修改密碼方式
===============================================================================================
16.忘記root密碼處理方式
Linux:
1.使用root登入
2.停止mysql服務(for redhad base)
service mysqld stop
3.使用mysqld_safe指令
mysqld_safe --skip-grant-tables &
此時,會開啟一個安全模式,並停住
4.開新的ssh,用root登入系統
5.使用mysql帳號登入mysql中
6.變更mysql中root密碼
update user set password = password('abc123') where user = 'root';
7.離開mysql
8.重新啟動mysql
9.使用root新密碼登入mysql
-----------------------------------------------------------------------------------------------
Windows:
1.用系統管理員登陸系統。
2.停止MySQL的服務。
3.進入命令視窗,然後進入MySQL的安裝目錄,比如我的安裝目錄是c:\mysql,進入C:\mysql\bin
4.跳過許可權檢查啟動MySQL,
c:\mysql\bin>mysqld-nt --skip-grant-tables 
5.重新打開一個視窗,進入c:\mysql\bin目錄,設置root的新密碼
c:\mysql\bin>mysqladmin -u root flush-privileges password "198651"
c:\mysql\bin>mysqladmin -u root -p shutdown
將newpassword替換為你要用的root的密碼,第二個命令會提示你輸入新密碼,重複第一個命令輸入的
密碼。
6.停止MySQL Server,用正常模式啟動Mysql

7.你可以用新的密碼連結到Mysql了。
命令:
net mysql start 啟動MYSQL
net stop mysql 停止MYSQL

下面以在Windows系統上為例,linux上將步驟 4 的mysqld-nt換為safe_mysqld即可
1 、停止mysql5服務:
net stop mysql5
2、開一個DOS視窗執行:
http://www.mscto.com
c:\mysql\bin>mysqld-nt --skip-grant-tables &
3、再開一個DOS視窗執行:
c:\mysql\bin>mysql mysql
> update user set password = password('123456') where user = 'root';
root密碼即為設置為123456!
4、啟動mysql5服務:
net start mysql5
相關資料:http://www.mscto.com/MySQL/20080731665.html
===============================================================================================
17.顯示目前mysql連線的threads狀態
mysql>show processlist; <==使用mysql語法
mysqladmin processlist -u root -p <==使用指令
===============================================================================================
18.列出MySQL目前的狀態
mysql> show status; <==使用mysql語法
mysqladmin status -u root -p <==使用指令(結果不同)

===============================================================================================
19.列出mysql的使用者
SELECT User FROM mysql.user Order by User;
帳號管理
mysql中,帳號可設為僅本機使用、僅網路使用、兩者皆可,與mysql安全性有關
mysql>grant all on *.* to towns@localhost identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、只能本機連線,擁有最大權限
mysql>grant all on *.* to towns@localhost identified by 'abc123';
利用語法建立towns可以管理所有資料庫、只能本機連線,少了grant權限,其他都有
mysql>grant all on *.* to towns@ identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、能外部及本機連線,擁有最大權限
mysql>grant all on *.* to towns identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、能外部及本機連線,擁有最大權限
towns@locahost <==只能本機連線
towns@192.168.8.176 <==只能192.168.8.176連線,用於限制帳號連線IP
towns@127.0.0.1 <==只能本機連線
towns@locahost.localdomain <==只能本機連線
towns@ <==不限制連線來源,危險的設定,不過local不能連
towns    <==不限制連線來源,危險的設定
註: 使用 towns@ 及 towns 在 mysql5 以上的版本會發生仍無法遠端連線,因為 mysql5 以上的版本多加了兩個特別的帳號,@localhost 及 @[hostname],這兩組帳號在我們設定帳號時,如果沒有給尾巴,會自動加上去,造成帳號不論local 或 遠端都無法連入
  19.1. mysql -e "GRANT ALL PRIVILEGES ON test.* TO test@localhost IDENTIFIED BY 'test' ; "
   利用指令來新增帳號
===============================================================================================
20.資料庫匯出管理
 1. 更換資料庫
登入mysql後,選用某個資料庫
mysql> use test; <==連入test資料庫
 2 .顯示資料庫的資料表(需先選好資料庫,才能show tables)
mysql> show tables;
mysql -e "use test; show tables; " -p <==直接使用指令下SQL語法,並使用root登入(沒設user預設為root)
 3. 顯示特定資料表中的欄位
mysql> describe table_name;
參考資料:http://www.xspace.idv.tw/bo_blog/read.php?32
===============================================================================================
21.免密碼登入mysql資料庫(用於資料庫定期備份等……)
 1.vim ~/.my.cnf
   [client]
   password=YOUR_MYSQL_PASSWORD
 2.chmod 600 ~/.my.cnf
設定完成後,直接使用mysql -u [user],就可以登入了
資料來源:http://plog.longwin.com.tw/my_note-unix/2009/04/09/mysql-login-backup-script-no-password-2009

22. 關於帳號問題:當建立最大權限帳號後,該帳號無法本機登入
 1. 安裝後系統自動產生的帳號,兩個空白(@localhost、@localhost.localdomain)及三個root (root@localhostroot@127.0.0.1root@localhost.localdomain)帳號
 2. 此時 root 帳號可以本機登入,不可遠端登入
 3. 建立 towns 帳號後(建立最大權限帳號),towns 只能遠端登入,無法本機登入
 4. 建立 towns@localhost 帳號,towns 可以本機登入
兩個空白帳號為安全性帳號,當我們使用towns登入時,沒寫完整帳號,會自動帶入@localhost,導致最大權限帳號無法本機登入,將兩個空白帳號刪除後,最大權限帳號(towns),就可以本機登入了。而這兩個空白帳號 towns 是透過第三方軟體,才刪除的

23. mysql 連線數設定
Linux 系統:my.cnf 檔中預設並無此參數,需手動加入
設定 /etc/my.cnf
max_connections=100 <==連線上限100
max_user_connections=15 <==使用者連線上限15
也可以設定單一帳號最大連線數,登入mysql後使用語法修改
grant all on *.* to towns with MAX_USER_CONNECTIONS 15 ; <== towns帳號最大連線數為15
windows 系統:在安裝設定時configuration Wizard即有詢問Concurrent Conections,自定值可到1400
設定 C:\Program Files\MySQL\MySQL Server 5.1\my.ini
max_connections=2037 <==連線上限 2037
資料來源:
http://ssorc.tw/rewrite.php/read-639.html
http://kiki.longwin.com.tw/?p=16

 24. 使用phpmyadmin 設計資料庫
教學:http://sofree.cc/phpmyadmin-mysql/

 25. 改變mysql 預設參數
需修改 /etc/my.cnf檔
例1:變更預設封包大小(max_allowed_packet)
在[mysqld] 下面加入一行
max_allowed_packet = 20M
存檔後,重新啟重mysql
使用mysqladmin variables -u root -p 確認 預設封包值是否已變更
例2:變更資料庫預設語(character_set_server),這個只有mysql 4 才須要改
character_set_server = utf8
存檔後,重新啟重mysql
使用mysqladmin variables -u root -p 確認character_set_server 及 character_set_database 是否變為 utf8
註:不同的下指令方式得到不同的結果
towns 使用 mysqladmin variables -u root -p 出現了以下五個值皆改為UTF8
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
towns 登入資料庫後(mysql -u root -p),再使用 show variables;,得到以下結果
character_set_client  ==> latin1
character_set_connection  ==> latin1
character_set_database ==> utf8
character_set_results ==> latin1
character_set_server ==> utf8

 26. 資料庫編碼轉換問題
這個問題只會出現在 mysql 4版中
使用指令 SET NAMES utf8;將character_set_client、character_set_connection、character_set_results改為 UTF8,這個是臨時性的修改相關資料:感謝前輩說明 http://chiouss0817.wordpress.com/2006/05/15/internal-charset-conversion-of-mysql/

27. 免密碼登入mysql
這個在備份時很好用
    vim /home/towns/.my.cnf <==建立或編輯.my.cnf檔
        [client]                                       <== 加入這兩行,[ ]中是打下密碼
        password= [mysql password]
    chmod 600 ~/.my.cnf <==調整檔案權限
相關資料:http://blog.longwin.com.tw/2009/04/mysql-login-backup-script-no-password-2009/

28. mysql 效能觀察與調整

相關資料:
http://forum.slime.com.tw/thread208416.html
http://portable.easylife.tw/2074
http://blog.xuite.net/huenlil/note/5877606

29. Mysql UTF-8 中文排序問題
towns在匯資料到Mysql資料庫中,如果欄位資料為中文UTF-8,會出現排序異常的情形,找了一些資料提供大家參考
 1.SELECT * FROM `test` ORDER BY CONVERT(`name` USING big5) DESC
 2.
註:DESC為大到小,ASC為小到大

coolhd大的blog http://www.ezdiy.org/forum/viewtopic.php?id=392
KKonline大的blog http://kkonline.pixnet.net/blog/post/34095805-mysql%E4%B8%AD%E7%9A%84utf8%E4%B8%AD%E6%96%87%E6%8E%92%E5%BA%8F%E7%9A%84%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88

沒有留言:

張貼留言