天天看點

mysql-5.5.50-winx64

1 擷取幫助文檔

cd C:\Program Files\mysql\mysql-5.5.50-winx64
C:\Program Files\mysql\mysql-5.5.50-winx64> bin\mysqld.exe --verbose --help > mysqld_note.txt      

2 在 Windows 平台以服務運作

2.1 啟動伺服器

  需要安裝,寫個安裝腳本“bin\mysqld.exe --install”,執行即可。在服務管理運作資料庫,預設服務名稱“MySQL”。需要指定服務名稱時,要在安裝時設定“bin\mysqld.exe --install mysql5.5”。

  安裝時,如果使用“--install”表示主機啟動時自動啟動服務,使用“--install-manual”表示不啟動。

  啟動資料庫②

C:\> net start mysql      
C:\> sc query mysql
C:\> sc start mysql      

  檢視監聽

C:\> netstat -na -p tcp      

  連接配接伺服器,root 使用者預設無密碼。安裝後需要修改預設密碼。測試成功後,按需要設定環境變量。初始登陸時,沒有連接配接任何資料庫。

C:\Program Files\mysql\mysql-5.5.50-winx64> bin\mysql -uroot -p -h localhost
mysql> show databases;
mysql> use mysql;
mysql> show tables;      

2.2 啟動多個端口

  設定兩個配置檔案,建立兩個資料目錄;

[mysqld]
port        = 3307
bind_address = 192.168.130.1
character_set_server  = gbk
datadir = C:/data/data2      
[mysqld]
port        = 3308
bind_address = 192.168.130.1
character_set_server  = gbk
datadir = C:/data/data3      

  啟動服務:

C:\WINDOWS\system32>mysqld --defaults-file=C:/data/my2.ini
160629 10:09:05 [Note] mysqld (mysqld 5.5.50) starting as process 14408 ...

C:\WINDOWS\system32>mysqld --defaults-file=C:/data/my3.ini
160629 10:09:30 [Note] mysqld (mysqld 5.5.50) starting as process 14508 ...

C:\WINDOWS\system32>netstat -na -p tcp -o | findstr "192.168.130.1"
  TCP    192.168.130.1:3307     0.0.0.0:0              LISTENING       14408
  TCP    192.168.130.1:3308     0.0.0.0:0              LISTENING       14508      

2.3 服務方式啟動多個端口

  必要時,删除之前添加的服務。重新安裝服務:

mysqld --install mysql2 --defaults-file=C:/data/my2.ini
mysqld --install mysql3 --defaults-file=C:/data/my3.ini
net start mysql2
net start mysql3      

  此時,mysql 連接配接時需要使用選項“-P”指定連接配接的服務使用的端口号。

2.4 命名管道、共享記憶體

  使用命名管道連接配接資料庫,修改配置檔案:

skip-networking
enable-named-pipe      

  重新開機服務,使用指令連接配接資料庫:

mysql --protocol=pipe -uroot      

  如果,需改了系統預設使用者,查驗後适當添加使用者“create user 'root'@'localhost';”。

  使用共享記憶體連接配接資料庫,修改配置檔案:

skip-networking
shared-memory=on      
mysql --protocol=memory -uroot      

  指定連接配接名稱配置檔案、連接配接指令(預設連接配接“MYSQL”):

skip-networking
shared-memory=on
shared_memory_base_name = MYSQL1      
C:\> mysql -umldn -p --protocol=memory -Dmldn --shared-memory-base-name=MYSQL1
C:\> mysql --protocol=memory --shared_memory_base_name=MYSQL1 -uroot
mysql> show variables like '%memory%';      

  * 如果是沒有明确使用哪個,預設是命名管道方式;兩者在監聽時共享記憶體可以通過指令“mysql -uroot”連接配接:

skip-networking
#shared-memory=on
#enable-named-pipe      

3 配置資訊

  在沒有“任何配置”的情況下,服務依然可以啟動,需要有效控制服務啟動時設定配置檔案。在安裝目錄下依據參考配置檔案,修改(複制)為“my.ini”。

  檢視運作時配置資訊。(幫助文檔最後一行獲悉)(設定下環境變量)

3.1 查詢

  配置查詢

 C:\ mysqladmin variables      

  檢視字元集

 C:\ mysqladmin variables | findstr "character"      

  檢視資料路徑

 C:\ mysqladmin variables | findstr "datadir"      

  檢視存儲引擎

 C:\ mysqladmin variables | findstr "default_storage_engine"      

  檢視“hostname”

 C:\ mysqladmin variables | findstr "hostname"      

  檢視“innodb”資訊

 C:\ mysqladmin variables | findstr "innodb"      

  檢視日志資訊

 C:\ mysqladmin variables | findstr "log"      

  檢視“port”資訊

 C:\ mysqladmin variables | findstr "port"      

  性能查詢

 C:\ mysqladmin status      

3.2 設定

  字元集改為“gbk”,修改配置檔案“[mysqld]”。

character_set_server  = gbk      

  可以修改的字元集,可以通過指令查詢得知,也可以從配置檔案(“share\charsets\index.xml”)裡看到。

mysql> show character set;      

  監聽端口改為“33306”,監聽位址“192.168.130.1”:

port = 33306
bind_address = 192.168.130.1      

  設定“bind_address”選項後,監聽位址被限定在某一個接口位址上,不設定該選項,所有機器上位址都監聽。預設監聽顯示“0.0.0.0”,表示監聽了“所有 ipv4 位址”;如果是“::”,表示監聽了“所有 ipv4 和 ipv6 位址”。

  資料庫目錄;複制預設的目錄内容到新設定的資料目錄中。

datadir = D:/data/      

4 增加使用者

  預設情況,mysql 隻接受本地登入的使用者;并且登陸無需密碼,連使用者名不輸入都可以。

4.1 root使用者

  預設情況下,root在本地登入時不需要密碼;甚至不需要使用者名也可以登陸。可是要是修改了監聽 IP 位址時,所有使用者就統統無法登陸了。需要在修改監聽之前設定好,這裡僅僅設定了查詢 mysql 庫的權限。

mysql> create user 'root'@'192.168.130.1';
mysql> update user set Select_priv='Y' where user='root' and host='192.168.130.1';
mysql> update user set password=password('xxxxxx') where host='192.168.130.1';
mysql> select host,user,password from user ;
+---------------+------+-------------------------------------------+
| host          | user | password                                  |
+---------------+------+-------------------------------------------+
| localhost     | root |                                           |
| 127.0.0.1     | root |                                           |
| ::1           | root |                                           |
| localhost     |      |                                           |
| 192.168.130.1 | root | *BDAB0082659254CA8B96B38EC29F67DB05A48D3C |
+---------------+------+-------------------------------------------+
5 rows in set (0.00 sec)      

  使用“set password for 'user'@'host'=password('new-password');”也可以修改密碼;或者“grant all privileges on database.table to 'user'@'host' identified by 'new-password;'”。

  增加更多權限。

mysql> grant all on mysql.* to 'root'@'192.168.130.1';      

  配置生效:

mysql> flush privileges;      

4.2 其他使用者

  針對資料庫“test”增加一個進階使用者。

mysql> create user 'sunny'@'192.168.130.1';
mysql> update user set password=password('xxxxxx') where user='sunny';
mysql> grant all on test.* to 'sunny'@'192.168.130.1';
mysql> flush privileges;      

  登陸後,執行下邊指令,檢視目前使用者、目前連接配接資料庫:

mysql> select user();
mysql> select database();      

4.3 test庫的問題

  當設定的使用者是“test”庫時,如果輸入錯誤的密碼當然無法登陸。但是在不輸入密碼(設定過密碼)的情況下,卻也可以登陸。這是應為使用者登入資料庫,受到多個表的管制,打開表“mysql.db”時,啥都明白了。

mysql> select host,db,user from db;
+---------------+---------+-------+
| host          | db      | user  |
+---------------+---------+-------+
| %             | test    |       |
| %             | test\_% |       |
| 192.168.130.1 | test    | sunny |
+---------------+---------+-------+
3 rows in set (0.00 sec)      

  這個表内容,是什麼意思。“登陸任意主機”、“test庫”“test_開頭的庫”,不需要使用者名即可登入。當然在輸入使用者名“sunny”沒有輸入密碼時可以登入。

4.4 預設‘root’權限

  檢視原有使用者權限“show grants”,給新使用者賦予相應權限:

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
mysql> GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION;      

5 mysqladmin

  文法:mysqladmin 選項 子指令;子指令:create、drop、extended-status、flush-privileges、flush-status、ping、kill、processlist、shutdown、status、(global )variables。選項:-i、-c。

C:\> mysqladmin -uroot -p -h192.168.130.1 extend-status
C:\> mysqladmin -uroot -p -h192.168.130.1 shutdown
C:\> mysqladmin -uroot -p -h192.168.130.1 ping      

查詢

檢視目前庫、庫包含的表:

mysql> select database();
mysql> show tables;      

檢視目前使用者、使用者權限:

mysql> select user();
mysql> show grants for 'mldn'@'localhost';      

檢視表屬性(可以使用“%”作為通配符比對)、建立語句:

mysql> show table status like 'user' \G
mysql> show create table user\G      
mysql> show variables like '%memory%';      

繼續閱讀