標籤:linux mysql
小Q:夢想著詩一般的日子,時而簡單,時而精緻;處在歌一般的生活,時而
靠譜,時而不著調。
======================================================================
mysql在指定IP上啟動連接埠-----------------------------------------
只需在my.cnf中的[mysqld]欄位中加入一行
bind-addr = 1.1.1.1
同一台MySQL伺服器啟動多個連接埠------------------------------------
可以查看安裝說明書,具體步驟如下:
先安裝,因為多個連接埠,所以要根據設定檔來初始化多個資料庫
比如有兩個,則要運行兩次
./scripts/mysql_install_db --datadir=/home/mysql1 --user=mysql
./scripts/mysql_install_db --datadir=/home/mysql2 --user=mysql
設定檔要編輯成這樣
[mysqld0]port = 3300socket = /tmp/mysql0.sockpid-file = /home/mysql0/localhost.localdomain0.piddatadir = /home/mysql0#log = /data/mysql0/mysql0.loguser = mysqlskip-lockingskip-name-resolve#skip-bdb#skip-innodbkey_buffer = 128Mmax_allowed_packet = 1Mtable_cache = 864sort_buffer_size = 1Mread_buffer_size = 512Kread_rnd_buffer_size = 1Mmyisam_sort_buffer_size = 32Mthread_cache_size = 16query_cache_size = 32Mthread_concurrency = 8#skip-networkingwait_timeout=8max_connections=512max_connect_errors = 10000000max_user_connections=20#slow_queries=/data/mysql0slowquer.sql#log_slow_queries=/data/mysql0slowquer.sql#long_query_time=3#log-bin=mysql0-bin###########################[mysqld1]port = 3301socket = /tmp/mysql1.sockpid-file = /home/mysql1/localhost.localdomain1.piddatadir = /home/mysql1#log = /data/mysql1/mysql1.loguser = mysqlskip-lockingskip-name-resolve#skip-innodb#skip-bdbkey_buffer = 128Mmax_allowed_packet = 1Mtable_cache = 864sort_buffer_size = 1Mread_buffer_size = 512Kread_rnd_buffer_size = 1Mmyisam_sort_buffer_size = 32Mthread_cache_size = 16query_cache_size = 32Mthread_concurrency = 8#skip-networkingwait_timeout=8max_connections=512max_connect_errors = 10000000max_user_connections=20#log_slow_queries=/data/mysql1slowquer.sql#long_query_time=3#log-bin=mysql1-bin########################################
把設定檔放在 /etc/my.cnf
最後就該啟動了
/usr/local/mysql/bin/mysqld_multi start 0-1 這裡的0或1是根據設定檔中"[mysqld0]"來定的。
資料庫引擎的種類對比---------------------------------------------
MyISAM管理非事務表。它提供高速儲存和檢索,以及全文檢索搜尋能力。
MyISAM在所有MySQL配置裡被支援,它是預設的儲存引擎,除非你配置MySQL預設使用另外一個引擎。
MEMORY儲存引擎提供“記憶體中”表。MERGE儲存引擎允許集合將被處理同樣的MyISAM表作為一個單獨的表。就像MyISAM一樣,MEMORY和MERGE儲存引擎處理非事務表,這兩個引擎也都被 預設包含在MySQL中。注釋:MEMORY儲存引擎正式地被確定為HEAP引擎。
InnoDB和BDB儲存引擎提供事務安全表。BDB被包含在為支援它的作業系統發布的MySQL-Max二進位分發版裡。InnoDB也 預設被包括在所有MySQL 5.1二進位分發版裡,你可以按照喜好通過配置MySQL來允許或禁止任一引擎。
EXAMPLE儲存引擎是一個“存根”引擎,它不做什麼。你可以用這個引擎建立表,但沒有資料被儲存於其中或從其中檢索。這個引擎的目的是服務 ,在MySQL原始碼中的一個例子,它示範說明如何開始編寫新儲存引擎。同樣,它的主要興趣是對開發人員。
NDB Cluster是被MySQL Cluster用來實現分割到多台電腦上的表的儲存引擎。它在MySQL-Max 5.1二進位分發版裡提供。這個儲存引擎當前只被Linux, Solaris, 和Mac OS X 支援。在未來的MySQL分發版中,我們想要添加其它平台對這個引擎的支援,包括Windows。
ARCHIVE儲存引擎被用來無索引地,非常小地覆蓋儲存的大量資料。
CSV儲存引擎把資料以逗號分隔的格式儲存在文字檔中。
BLACKHOLE儲存引擎接受但不儲存資料,並且檢索總是返回一個空集。
FEDERATED儲存引擎把資料存在遠端資料庫中。在MySQL 5.1中,它只和
MySQL一起工作,使用MySQL C Client API。在未來的分發版中,我們想要讓它使用其它磁碟機或用戶端串連方法串連到另外的資料來源。
mysqld_multi stop 不能停掉mysql--------------------------------
使用mysqld_multi start 啟動了多個mysql執行個體,但是mysqld_multi stop 卻不能停止,為啥呢?因為你還沒有授權呢。
/usr/local/mysql/bin/mysqld_multi stop
但是預設是停不掉的,需要我們做一個授權
grant shutdown on *.* to ‘username‘@‘localhost‘ identified by ‘password‘
另外還需要在my.cnf設定檔中加上:
[mysqld_multi]mysqld = /usr/local/mysql/bin/mysqld_safemysqladmin = /usr/local/mysql/bin/mysqladminuser = usernamepassword = password
======================================練習題========================================
1.如何更改系統內容變數PATH?
vim /etc/profile 加入 PATH=$PATH:/usr/local/mysql/bin
2. 預設mysql安裝好後,並沒有root密碼,如何給root設定一個密碼?
mysqladmin -uroot password ‘newpass‘
3. 如何更改root密碼?
mysqladmin -uroot -poldpasswd password ‘newpasswd‘
4. 如何串連遠端mysql伺服器?
mysql -uusername -ppass -hhostip -Pport
5. 如何查看當前登陸mysql的賬戶?
select user();
6. 在mysql命令列下,怎麼切換某個庫?
use databasename;
7. 如何查看一個表都有哪些欄位?
desc tablename;
8. 如何查看某個表使用的是哪種資料庫引擎?
show create table\G;
9. 如何查看當前資料庫有哪些隊列?
show processlist;
10. 當有很多隊列時,如何查看有哪些慢查詢?
看慢查詢日誌,慢查詢日誌在/etc/my.cnf中設定方法是增加:
log_slow_queries = logname
long_query_time = 1 //查詢時間超過1s會記錄日誌
11. 如何查看當前mysql的參數值?
show variables;
12. 如何不重啟mysql服務,更改某個參數?
set global xxx = xxx; 比如
set global wait_timeout = 10;
13. 用什麼工具備份資料庫?請區分myisam引擎和innodb引擎兩種儲存引擎的備份。
mysqldump 備份資料庫,mysqldump可以備份兩種引擎的資料。但是innodb引擎的資料使用xtrabackup工具更快
14. 簡單描述myisam和innodb引擎的區別。
innodb不支援fulltext類型索引;
innodb不儲存表的行數;
myisam的資料直接存在系統的檔案中,而innodb的資料庫會事先建立一個資料資料表空間檔案,然後再從這個資料表空間檔案中存資料;
myisam不提供事務支援,InnoDB提供事務支援事務,外部鍵等進階 資料庫功能;
myisam的鎖是對整個表鎖定,innodb是行鎖;
15. 如果你的mysql服務啟動不了,而當前終端又沒有報錯,你如何做?
查看mysql的日誌,日誌預設在datadir下,以hostname為名字的.err檔案
16. 要備份的庫字元集是gbk的字元集,為了避免出現亂碼的情況,如何在備份與還原的時候指定字元集為gbk?
備份指定 mysqldump --default-character-set=gbk
恢複指定 mysql --default-character-set=gbk
17. 錯誤記錄檔中,如果出現提示說某個表損壞需要修複,你如何修複這個表呢?
repair table tablename;
18. 備份myisam引擎的資料庫時,我們除了使用mysqldump工具備份外,還可以直接拷貝資料庫的來源資料(.frm, .MYD, .MYI三種格式的資料),其中哪一個檔案可以不拷貝?若想恢複該檔案,如何做?
.MYI的檔案可以不拷貝,恢複的時候,需要修複表,但加上 use_frm, 如
repair table tb1 use_frm;
19. 如果mysql的root密碼忘記了如何做?
1) 編輯mysql主設定檔 my.cnf vim /etc/my.cnf
在[mysqld]欄位下添加參數 skip-grant
2) 重啟資料庫服務 service mysqld restart
3) 這樣就可以進入資料庫不用授權了 mysql -uroot
4) 修改相應使用者密碼 use mysql;
update user set password=password(‘your password‘) where user=‘root‘;
flush privileges;
5) 修改/etc/my.cnf 去掉 skip-grant , 重啟mysql服務
20. 如何更改mysql的普通賬戶密碼?
update user set password=password(‘your password‘) where user=‘username‘;
21. mysql的命令曆史檔案在哪裡,為了安全我們其實是可以做一個小處理,不讓mysql的命令記錄在文檔中,請想一想如何利用之前我們學過的知識做到?
~/.mysql_history
我們可以這樣不儲存mysql命令曆史: cd ~; rm -f .mysql_history; ln -s /dev/null .mysql_history
22. 如何讓mysql的監聽連接埠為3307,而不是預設的3306?
vim /etc/my.cnf
把port = 3306 改為 port = 3307
第 四 十 三 天:mysql 的 相 關 問 題