您好,登錄后才能下訂單哦!
MariaDB數(shù)據(jù)庫(kù)管理系統(tǒng)是MySQL的一個(gè)分支,主要由開源社區(qū)在維護(hù),采用GPL授權(quán)許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。
mysqladmin是一個(gè)常用的執(zhí)行管理操作的程序,可以用它來檢查服務(wù)器的配置和當(dāng)前的狀態(tài),創(chuàng)建和刪除數(shù)據(jù)庫(kù)等。
一、mariadb的下載與配置
在centos7下進(jìn)行安裝yum安裝
yum install mariadb-server
yum安裝完畢后,修改/etc/my.cnf添加對(duì)utf-8中文的支持
[mysqld] character-set-server=utf8
啟動(dòng)停止等操作
systemctl start mariadb systemctl enable mariadb systemctl status mariadb
驗(yàn)證服務(wù)是否運(yùn)行
mysqladmin -V
初始化MariaDB
安裝完成MySQL-Server會(huì)提示可以運(yùn)行mysql_sercure_installation初始化配置
為root用戶設(shè)置密碼
刪除匿名賬號(hào)
取消root用戶遠(yuǎn)程登錄(某些時(shí)候需要保留)
刪除test庫(kù)和對(duì)test庫(kù)的訪問權(quán)限
[root@python ~]# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Enter current password for root (enter for none): ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] n ... skipping. By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] n ... skipping. By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
第一次啟動(dòng)MySQL只能使用root用戶
mysql -u root -p
二、配置文件說明 /etc/my.cnf
[client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /data/mysql pid-file = /data/mysql/mysql.pid user = mysql bind-address = 0.0.0.0 server-id = 1 #表示是本機(jī)的序號(hào)為1,一般來講就是master的意思 skip-name-resolve # 禁止MySQL對(duì)外部連接進(jìn)行DNS解析,使用這一選項(xiàng)可以消除MySQL進(jìn)行DNS解析的時(shí)間。但需要注意,如果開啟該選項(xiàng), # 則所有遠(yuǎn)程主機(jī)連接授權(quán)都要使用IP地址方式,否則MySQL將無法正常處理連接請(qǐng)求 #skip-networking back_log = 600 # MySQL能有的連接數(shù)量。當(dāng)主要MySQL線程在一個(gè)很短時(shí)間內(nèi)得到非常多的連接請(qǐng)求,這就起作用, # 然后主線程花些時(shí)間(盡管很短)檢查連接并且啟動(dòng)一個(gè)新線程。back_log值指出在MySQL暫時(shí)停止回答新請(qǐng)求之前的短時(shí)間內(nèi)多少個(gè)請(qǐng)求可以被存在堆棧中。 # 如果期望在一個(gè)短時(shí)間內(nèi)有很多連接,你需要增加它。也就是說,如果MySQL的連接數(shù)據(jù)達(dá)到max_connections時(shí),新來的請(qǐng)求將會(huì)被存在堆棧中, # 以等待某一連接釋放資源,該堆棧的數(shù)量即back_log,如果等待連接的數(shù)量超過back_log,將不被授予連接資源。 # 另外,這值(back_log)限于您的操作系統(tǒng)對(duì)到來的TCP/IP連接的偵聽隊(duì)列的大小。 # 你的操作系統(tǒng)在這個(gè)隊(duì)列大小上有它自己的限制(可以檢查你的OS文檔找出這個(gè)變量的最大值),試圖設(shè)定back_log高于你的操作系統(tǒng)的限制將是無效的。 max_connections = 1000 # MySQL的最大連接數(shù),如果服務(wù)器的并發(fā)連接請(qǐng)求量比較大,建議調(diào)高此值,以增加并行連接數(shù)量,當(dāng)然這建立在機(jī)器能支撐的情況下,因?yàn)槿绻B接數(shù)越多,介于MySQL會(huì)為每個(gè)連接提供連接緩沖區(qū),就會(huì)開銷越多的內(nèi)存,所以要適當(dāng)調(diào)整該值,不能盲目提高設(shè)值??梢赃^'conn%'通配符查看當(dāng)前狀態(tài)的連接數(shù)量,以定奪該值的大小。 max_connect_errors = 6000 # 對(duì)于同一主機(jī),如果有超出該參數(shù)值個(gè)數(shù)的中斷錯(cuò)誤連接,則該主機(jī)將被禁止連接。如需對(duì)該主機(jī)進(jìn)行解禁,執(zhí)行:FLUSH HOST。 open_files_limit = 65535 # MySQL打開的文件描述符限制,默認(rèn)最小1024;當(dāng)open_files_limit沒有被配置的時(shí)候,比較max_connections*5和ulimit -n的值,哪個(gè)大用哪個(gè), # 當(dāng)open_file_limit被配置的時(shí)候,比較open_files_limit和max_connections*5的值,哪個(gè)大用哪個(gè)。 table_open_cache = 128 # MySQL每打開一個(gè)表,都會(huì)讀入一些數(shù)據(jù)到table_open_cache緩存中,當(dāng)MySQL在這個(gè)緩存中找不到相應(yīng)信息時(shí),才會(huì)去磁盤上讀取。默認(rèn)值64 # 假定系統(tǒng)有200個(gè)并發(fā)連接,則需將此參數(shù)設(shè)置為200*N(N為每個(gè)連接所需的文件描述符數(shù)目); # 當(dāng)把table_open_cache設(shè)置為很大時(shí),如果系統(tǒng)處理不了那么多文件描述符,那么就會(huì)出現(xiàn)客戶端失效,連接不上 max_allowed_packet = 4M # 接受的數(shù)據(jù)包大??;增加該變量的值十分安全,這是因?yàn)閮H當(dāng)需要時(shí)才會(huì)分配額外內(nèi)存。例如,僅當(dāng)你發(fā)出長(zhǎng)查詢或MySQLd必須返回大的結(jié)果行時(shí)MySQLd才會(huì)分配更多內(nèi)存。 # 該變量之所以取較小默認(rèn)值是一種預(yù)防措施,以捕獲客戶端和服務(wù)器之間的錯(cuò)誤信息包,并確保不會(huì)因偶然使用大的信息包而導(dǎo)致內(nèi)存溢出。 binlog_cache_size = 1M # 一個(gè)事務(wù),在沒有提交的時(shí)候,產(chǎn)生的日志,記錄到Cache中;等到事務(wù)提交需要提交的時(shí)候,則把日志持久化到磁盤。默認(rèn)binlog_cache_size大小32K max_heap_table_size = 8M # 定義了用戶可以創(chuàng)建的內(nèi)存表(memory table)的大小。這個(gè)值用來計(jì)算內(nèi)存表的最大行數(shù)值。這個(gè)變量支持動(dòng)態(tài)改變 tmp_table_size = 16M # MySQL的heap(堆積)表緩沖大小。所有聯(lián)合在一個(gè)DML指令內(nèi)完成,并且大多數(shù)聯(lián)合甚至可以不用臨時(shí)表即可以完成。 # 大多數(shù)臨時(shí)表是基于內(nèi)存的(HEAP)表。具有大的記錄長(zhǎng)度的臨時(shí)表 (所有列的長(zhǎng)度的和)或包含BLOB列的表存儲(chǔ)在硬盤上。 # 如果某個(gè)內(nèi)部heap(堆積)表大小超過tmp_table_size,MySQL可以根據(jù)需要自動(dòng)將內(nèi)存中的heap表改為基于硬盤的MyISAM表。還可以通過設(shè)置tmp_table_size選項(xiàng)來增加臨時(shí)表的大小。也就是說,如果調(diào)高該值,MySQL同時(shí)將增加heap表的大小,可達(dá)到提高聯(lián)接查詢速度的效果 read_buffer_size = 2M # MySQL讀入緩沖區(qū)大小。對(duì)表進(jìn)行順序掃描的請(qǐng)求將分配一個(gè)讀入緩沖區(qū),MySQL會(huì)為它分配一段內(nèi)存緩沖區(qū)。read_buffer_size變量控制這一緩沖區(qū)的大小。 # 如果對(duì)表的順序掃描請(qǐng)求非常頻繁,并且你認(rèn)為頻繁掃描進(jìn)行得太慢,可以通過增加該變量值以及內(nèi)存緩沖區(qū)大小提高其性能 read_rnd_buffer_size = 8M # MySQL的隨機(jī)讀緩沖區(qū)大小。當(dāng)按任意順序讀取行時(shí)(例如,按照排序順序),將分配一個(gè)隨機(jī)讀緩存區(qū)。進(jìn)行排序查詢時(shí), # MySQL會(huì)首先掃描一遍該緩沖,以避免磁盤搜索,提高查詢速度,如果需要排序大量數(shù)據(jù),可適當(dāng)調(diào)高該值。但MySQL會(huì)為每個(gè)客戶連接發(fā)放該緩沖空間,所以應(yīng)盡量適當(dāng)設(shè)置該值,以避免內(nèi)存開銷過大 sort_buffer_size = 8M # MySQL執(zhí)行排序使用的緩沖大小。如果想要增加ORDER BY的速度,首先看是否可以讓MySQL使用索引而不是額外的排序階段。 # 如果不能,可以嘗試增加sort_buffer_size變量的大小 join_buffer_size = 8M # 聯(lián)合查詢操作所能使用的緩沖區(qū)大小,和sort_buffer_size一樣,該參數(shù)對(duì)應(yīng)的分配內(nèi)存也是每連接獨(dú)享 thread_cache_size = 8 # 這個(gè)值(默認(rèn)8)表示可以重新利用保存在緩存中線程的數(shù)量,當(dāng)斷開連接時(shí)如果緩存中還有空間,那么客戶端的線程將被放到緩存中, # 如果線程重新被請(qǐng)求,那么請(qǐng)求將從緩存中讀取,如果緩存中是空的或者是新的請(qǐng)求,那么這個(gè)線程將被重新創(chuàng)建,如果有很多新的線程, # 增加這個(gè)值可以改善系統(tǒng)性能.通過比較Connections和Threads_created狀態(tài)的變量,可以看到這個(gè)變量的作用。(–>表示要調(diào)整的值) # 根據(jù)物理內(nèi)存設(shè)置規(guī)則如下: # 1G —> 8 # 2G —> 16 # 3G —> 32 # 大于3G —> 64 query_cache_size = 8M #MySQL的查詢緩沖大?。◤?.0.1開始,MySQL提供了查詢緩沖機(jī)制)使用查詢緩沖,MySQL將SELECT語句和查詢結(jié)果存放在緩沖區(qū)中, # 今后對(duì)于同樣的SELECT語句(區(qū)分大小寫),將直接從緩沖區(qū)中讀取結(jié)果。根據(jù)MySQL用戶手冊(cè),使用查詢緩沖最多可以達(dá)到238%的效率。 # 通過檢查狀態(tài)值'Qcache_%',可以知道query_cache_size設(shè)置是否合理:如果Qcache_lowmem_prunes的值非常大,則表明經(jīng)常出現(xiàn)緩沖不夠的情況, # 如果Qcache_hits的值也非常大,則表明查詢緩沖使用非常頻繁,此時(shí)需要增加緩沖大??;如果Qcache_hits的值不大,則表明你的查詢重復(fù)率很低, # 這種情況下使用查詢緩沖反而會(huì)影響效率,那么可以考慮不用查詢緩沖。此外,在SELECT語句中加入SQL_NO_CACHE可以明確表示不使用查詢緩沖 query_cache_limit = 2M #指定單個(gè)查詢能夠使用的緩沖區(qū)大小,默認(rèn)1M key_buffer_size = 4M #指定用于索引的緩沖區(qū)大小,增加它可得到更好處理的索引(對(duì)所有讀和多重寫),到你能負(fù)擔(dān)得起那樣多。如果你使它太大, # 系統(tǒng)將開始換頁并且真的變慢了。對(duì)于內(nèi)存在4GB左右的服務(wù)器該參數(shù)可設(shè)置為384M或512M。通過檢查狀態(tài)值Key_read_requests和Key_reads, # 可以知道key_buffer_size設(shè)置是否合理。比例key_reads/key_read_requests應(yīng)該盡可能的低, # 至少是1:100,1:1000更好(上述狀態(tài)值可以使用SHOW STATUS LIKE 'key_read%'獲得)。注意:該參數(shù)值設(shè)置的過大反而會(huì)是服務(wù)器整體效率降低 ft_min_word_len = 4 # 分詞詞匯最小長(zhǎng)度,默認(rèn)4 transaction_isolation = REPEATABLE-READ # MySQL支持4種事務(wù)隔離級(jí)別,他們分別是: # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. # 如沒有指定,MySQL默認(rèn)采用的是REPEATABLE-READ,ORACLE默認(rèn)的是READ-COMMITTED log_bin = mysql-bin binlog_format = mixed expire_logs_days = 30 #超過30天的binlog刪除 log_error = /data/mysql/mysql-error.log #錯(cuò)誤日志路徑 slow_query_log = 1 long_query_time = 1 #慢查詢時(shí)間 超過1秒則為慢查詢 slow_query_log_file = /data/mysql/mysql-slow.log performance_schema = 0 explicit_defaults_for_timestamp #lower_case_table_names = 1 #不區(qū)分大小寫 skip-external-locking #MySQL選項(xiàng)以避免外部鎖定。該選項(xiàng)默認(rèn)開啟 default-storage-engine = InnoDB #默認(rèn)存儲(chǔ)引擎 innodb_file_per_table = 1 # InnoDB為獨(dú)立表空間模式,每個(gè)數(shù)據(jù)庫(kù)的每個(gè)表都會(huì)生成一個(gè)數(shù)據(jù)空間 # 獨(dú)立表空間優(yōu)點(diǎn): # 1.每個(gè)表都有自已獨(dú)立的表空間。 # 2.每個(gè)表的數(shù)據(jù)和索引都會(huì)存在自已的表空間中。 # 3.可以實(shí)現(xiàn)單表在不同的數(shù)據(jù)庫(kù)中移動(dòng)。 # 4.空間可以回收(除drop table操作處,表空不能自已回收) # 缺點(diǎn): # 單表增加過大,如超過100G # 結(jié)論: # 共享表空間在Insert操作上少有優(yōu)勢(shì)。其它都沒獨(dú)立表空間表現(xiàn)好。當(dāng)啟用獨(dú)立表空間時(shí),請(qǐng)合理調(diào)整:innodb_open_files innodb_open_files = 500 # 限制Innodb能打開的表的數(shù)據(jù),如果庫(kù)里的表特別多的情況,請(qǐng)?jiān)黾舆@個(gè)。這個(gè)值默認(rèn)是300 innodb_buffer_pool_size = 64M # InnoDB使用一個(gè)緩沖池來保存索引和原始數(shù)據(jù), 不像MyISAM. # 這里你設(shè)置越大,你在存取表里面數(shù)據(jù)時(shí)所需要的磁盤I/O越少. # 在一個(gè)獨(dú)立使用的數(shù)據(jù)庫(kù)服務(wù)器上,你可以設(shè)置這個(gè)變量到服務(wù)器物理內(nèi)存大小的80% # 不要設(shè)置過大,否則,由于物理內(nèi)存的競(jìng)爭(zhēng)可能導(dǎo)致操作系統(tǒng)的換頁顛簸. # 注意在32位系統(tǒng)上你每個(gè)進(jìn)程可能被限制在 2-3.5G 用戶層面內(nèi)存限制, # 所以不要設(shè)置的太高. innodb_write_io_threads = 4 innodb_read_io_threads = 4 # innodb使用后臺(tái)線程處理數(shù)據(jù)頁上的讀寫 I/O(輸入輸出)請(qǐng)求,根據(jù)你的 CPU 核數(shù)來更改,默認(rèn)是4 # 注:這兩個(gè)參數(shù)不支持動(dòng)態(tài)改變,需要把該參數(shù)加入到my.cnf里,修改完后重啟MySQL服務(wù),允許值的范圍從 1-64 innodb_thread_concurrency = 0 # 默認(rèn)設(shè)置為 0,表示不限制并發(fā)數(shù),這里推薦設(shè)置為0,更好去發(fā)揮CPU多核處理能力,提高并發(fā)量 innodb_purge_threads = 1 # InnoDB中的清除操作是一類定期回收無用數(shù)據(jù)的操作。在之前的幾個(gè)版本中,清除操作是主線程的一部分,這意味著運(yùn)行時(shí)它可能會(huì)堵塞其它的數(shù)據(jù)庫(kù)操作。 # 從MySQL5.5.X版本開始,該操作運(yùn)行于獨(dú)立的線程中,并支持更多的并發(fā)數(shù)。用戶可通過設(shè)置innodb_purge_threads配置參數(shù)來選擇清除操作是否使用單 # 獨(dú)線程,默認(rèn)情況下參數(shù)設(shè)置為0(不使用單獨(dú)線程),設(shè)置為 1 時(shí)表示使用單獨(dú)的清除線程。建議為1 innodb_flush_log_at_trx_commit = 2 # 0:如果innodb_flush_log_at_trx_commit的值為0,log buffer每秒就會(huì)被刷寫日志文件到磁盤,提交事務(wù)的時(shí)候不做任何操作(執(zhí)行是由mysql的master thread線程來執(zhí)行的。 # 主線程中每秒會(huì)將重做日志緩沖寫入磁盤的重做日志文件(REDO LOG)中。不論事務(wù)是否已經(jīng)提交)默認(rèn)的日志文件是ib_logfile0,ib_logfile1 # 1:當(dāng)設(shè)為默認(rèn)值1的時(shí)候,每次提交事務(wù)的時(shí)候,都會(huì)將log buffer刷寫到日志。 # 2:如果設(shè)為2,每次提交事務(wù)都會(huì)寫日志,但并不會(huì)執(zhí)行刷的操作。每秒定時(shí)會(huì)刷到日志文件。要注意的是,并不能保證100%每秒一定都會(huì)刷到磁盤,這要取決于進(jìn)程的調(diào)度。 # 每次事務(wù)提交的時(shí)候?qū)?shù)據(jù)寫入事務(wù)日志,而這里的寫入僅是調(diào)用了文件系統(tǒng)的寫入操作,而文件系統(tǒng)是有 緩存的,所以這個(gè)寫入并不能保證數(shù)據(jù)已經(jīng)寫入到物理磁盤 # 默認(rèn)值1是為了保證完整的ACID。當(dāng)然,你可以將這個(gè)配置項(xiàng)設(shè)為1以外的值來換取更高的性能,但是在系統(tǒng)崩潰的時(shí)候,你將會(huì)丟失1秒的數(shù)據(jù)。 # 設(shè)為0的話,mysqld進(jìn)程崩潰的時(shí)候,就會(huì)丟失最后1秒的事務(wù)。設(shè)為2,只有在操作系統(tǒng)崩潰或者斷電的時(shí)候才會(huì)丟失最后1秒的數(shù)據(jù)。InnoDB在做恢復(fù)的時(shí)候會(huì)忽略這個(gè)值。 # 總結(jié) # 設(shè)為1當(dāng)然是最安全的,但性能頁是最差的(相對(duì)其他兩個(gè)參數(shù)而言,但不是不能接受)。如果對(duì)數(shù)據(jù)一致性和完整性要求不高,完全可以設(shè)為2,如果只最求性能,例如高并發(fā)寫的日志服務(wù)器,設(shè)為0來獲得更高性能 innodb_log_buffer_size = 2M # 此參數(shù)確定些日志文件所用的內(nèi)存大小,以M為單位。緩沖區(qū)更大能提高性能,但意外的故障將會(huì)丟失數(shù)據(jù)。MySQL開發(fā)人員建議設(shè)置為1-8M之間 innodb_log_file_size = 32M # 此參數(shù)確定數(shù)據(jù)日志文件的大小,更大的設(shè)置可以提高性能,但也會(huì)增加恢復(fù)故障數(shù)據(jù)庫(kù)所需的時(shí)間 innodb_log_files_in_group = 3 # 為提高性能,MySQL可以以循環(huán)方式將日志文件寫到多個(gè)文件。推薦設(shè)置為3 innodb_max_dirty_pages_pct = 90 # innodb主線程刷新緩存池中的數(shù)據(jù),使臟數(shù)據(jù)比例小于90% innodb_lock_wait_timeout = 120 # InnoDB事務(wù)在被回滾之前可以等待一個(gè)鎖定的超時(shí)秒數(shù)。InnoDB在它自己的鎖定表中自動(dòng)檢測(cè)事務(wù)死鎖并且回滾事務(wù)。InnoDB用LOCK TABLES語句注意到鎖定設(shè)置。默認(rèn)值是50秒 bulk_insert_buffer_size = 8M # 批量插入緩存大小, 這個(gè)參數(shù)是針對(duì)MyISAM存儲(chǔ)引擎來說的。適用于在一次性插入100-1000+條記錄時(shí), 提高效率。默認(rèn)值是8M??梢葬槍?duì)數(shù)據(jù)量的大小,翻倍增加。 myisam_sort_buffer_size = 8M # MyISAM設(shè)置恢復(fù)表之時(shí)使用的緩沖區(qū)的尺寸,當(dāng)在REPAIR TABLE或用CREATE INDEX創(chuàng)建索引或ALTER TABLE過程中排序 MyISAM索引分配的緩沖區(qū) myisam_max_sort_file_size = 10G # 如果臨時(shí)文件會(huì)變得超過索引,不要使用快速排序索引方法來創(chuàng)建一個(gè)索引。注釋:這個(gè)參數(shù)以字節(jié)的形式給出 myisam_repair_threads = 1 # 如果該值大于1,在Repair by sorting過程中并行創(chuàng)建MyISAM表索引(每個(gè)索引在自己的線程內(nèi)) interactive_timeout = 28800 # 服務(wù)器關(guān)閉交互式連接前等待活動(dòng)的秒數(shù)。交互式客戶端定義為在mysql_real_connect()中使用CLIENT_INTERACTIVE選項(xiàng)的客戶端。默認(rèn)值:28800秒(8小時(shí)) wait_timeout = 28800 # 服務(wù)器關(guān)閉非交互連接之前等待活動(dòng)的秒數(shù)。在線程啟動(dòng)時(shí),根據(jù)全局wait_timeout值或全局interactive_timeout值初始化會(huì)話wait_timeout值, # 取決于客戶端類型(由mysql_real_connect()的連接選項(xiàng)CLIENT_INTERACTIVE定義)。參數(shù)默認(rèn)值:28800秒(8小時(shí)) # MySQL服務(wù)器所支持的最大連接數(shù)是有上限的,因?yàn)槊總€(gè)連接的建立都會(huì)消耗內(nèi)存,因此我們希望客戶端在連接到MySQL Server處理完相應(yīng)的操作后, # 應(yīng)該斷開連接并釋放占用的內(nèi)存。如果你的MySQL Server有大量的閑置連接,他們不僅會(huì)白白消耗內(nèi)存,而且如果連接一直在累加而不斷開, # 最終肯定會(huì)達(dá)到MySQL Server的連接上限數(shù),這會(huì)報(bào)'too many connections'的錯(cuò)誤。對(duì)于wait_timeout的值設(shè)定,應(yīng)該根據(jù)系統(tǒng)的運(yùn)行情況來判斷。 # 在系統(tǒng)運(yùn)行一段時(shí)間后,可以通過show processlist命令查看當(dāng)前系統(tǒng)的連接狀態(tài),如果發(fā)現(xiàn)有大量的sleep狀態(tài)的連接進(jìn)程,則說明該參數(shù)設(shè)置的過大, # 可以進(jìn)行適當(dāng)?shù)恼{(diào)整小些。要同時(shí)設(shè)置interactive_timeout和wait_timeout才會(huì)生效。 [mysqldump] quick max_allowed_packet = 16M #服務(wù)器發(fā)送和接受的最大包長(zhǎng)度 [myisamchk] key_buffer_size = 8M sort_buffer_size = 8M read_buffer = 4M write_buffer = 4M
三、查、增、刪、改
查看數(shù)據(jù)庫(kù),表
show databases; #查看數(shù)據(jù)庫(kù) use XXX; #進(jìn)入數(shù)據(jù)庫(kù) show tables; # 查看表 create database XXXX charset utf8; #創(chuàng)建數(shù)據(jù)庫(kù),utf8格式 drop database XXXX; #刪除數(shù)據(jù)庫(kù) show create database XXXXX; #查看創(chuàng)建數(shù)據(jù)庫(kù)的 show create table tablename; #查看創(chuàng)建的表 description tablenmae; #查看表結(jié)構(gòu)
表結(jié)構(gòu)說明:
#自增長(zhǎng) auto_increment #類型 Type #非空 not null #默認(rèn)值 default 'xx' #唯一 unique #指定字符集 charset #主鍵 primary key #外鍵 增加兩個(gè)表之間的聯(lián)系
增加表:
create table students( id int auto_increment primary key, name varchar(10) not null, sex varchar(3) default '女', address varchar(50), phone int not null unique, age, ); =============================== create table scores( id int auto_increnent primary key, s_id int not null, grade float not null, );
刪除表
drop table tablename; truncate tablename;#快速刪除表
增
insert into student (name,money,sex,phone) values ('hk',10000,'男',188); insert into student values('','小明',100,'',120);
改
update student set money=100;#不指定條件,修改所有 update student set money=110 where name='hk';#只改hk
查
查: select * from students limit 1,5; #從第幾條開始,下面的x條,不包含開始的那一條 SELECT * from students limit 5;查詢5條 SELECT id,stu_name,sex,money,phone from students;#指定查詢的字段 SELECT * from students;#查詢所有的數(shù)據(jù) SELECT * from students where sex='男';#指定條件 SELECT * from students where sex='男' and money>100; #多個(gè)條件,必須同時(shí)滿足 SELECT * from students where sex='男' or sex='未知' ; #多個(gè)條件,有一個(gè)滿足即可 SELECT * from students where sex !='男'; #<>也是不等于 SELECT * FROM students where addr like '%東京%';#模糊匹配,%代表的是通配符,必須得用like SELECT * from students a where a.stu_name like '姚_';#_通配符表示任意一個(gè)單字符,姚字后面只能跟一個(gè)字 SELECT a.stu_name '學(xué)生名稱',a.phone '學(xué)生電話' from students as a where a.stu_name='姚遠(yuǎn)';#給表起別名,as可以省略 SELECT * from students a where a.stu_name in ('×××','林倩','林遠(yuǎn)');# in SELECT * from students a where a.money BETWEEN 1000 and 10000;#在什么什么之間的數(shù)據(jù) SELECT * from students ORDER BY money desc; #order by xxx desc,根據(jù)哪個(gè)字段繼續(xù)排序,默認(rèn)是升序, 降序是desc,升序asc SELECT * from students a where a.addr = '' or a.addr is null; #查詢字段為空的數(shù)據(jù) SELECT DISTINCT a.money from students a ;#去重 SELECT COUNT(*) '學(xué)生人數(shù)' from students where sex='女'; #統(tǒng)計(jì)行數(shù) SELECT MAX(a.money) 錢最多 from students a; #最大值 SELECT min(money) 錢最少 from students;#最小值 SELECT AVG(a.money) 平均多少錢 from students a; #平均數(shù) SELECT sum(a.money) 總共多少錢 from students a;#總和 SELECT sex 性別,count(*) 人數(shù) from students GROUP BY sex; #分組
四、mysqladmin操作
更改管理員密碼
mysqladmin -u root -p oldpassword newpaaswd
創(chuàng)建數(shù)據(jù)庫(kù)
# mysqladmin -u root -p create ABC Enter password:
查看mariaDB服務(wù)狀態(tài)
# mysqladmin proc stat -u root -p Enter password:
說明:
Uptime :在線運(yùn)行時(shí)間,單位秒
Threads:活動(dòng)線程(客戶)的數(shù)目
Question:服務(wù)器啟動(dòng)以來的客戶問題(查詢)數(shù)目
Slow queries:執(zhí)行時(shí)間超過long-query_time秒的查詢數(shù)量
Opens:服務(wù)器已經(jīng)打開的數(shù)據(jù)庫(kù)的數(shù)量
Flush tables:服務(wù)器已經(jīng)執(zhí)行的flush、refresh和reload的命令的數(shù)量
Queries per second avg:平均每秒查詢數(shù)
mysqladmin常用命令
mysqladmin [OPTIONS] command command.. #語法 參數(shù)選項(xiàng): -c number 自動(dòng)運(yùn)行次數(shù)統(tǒng)計(jì),必須和 -i 一起使用 -i number 間隔多長(zhǎng)時(shí)間重復(fù)執(zhí)行
#每個(gè)兩秒查看一次服務(wù)器的狀態(tài),總共重復(fù)5次。 mysqladmin -uroot -p -i 2 -c 5 status
#查看服務(wù)器的狀況: mysqladmin -uroot -p status
修改root 密碼: mysqladmin -u root -p原密碼 password 'newpassword'
檢查mysqlserver是否可用: mysqladmin -uroot -p ping
查詢服務(wù)器的版本 mysqladmin -uroot -p version
查看服務(wù)器狀態(tài)的當(dāng)前值: mysqladmin -uroot -p extended-status
查詢服務(wù)器系統(tǒng)變量值: mysqladmin -uroot -p variables
顯示服務(wù)器所有運(yùn)行的進(jìn)程: mysqladmin -uroot -p processlist mysqladmin -uroot -p-i 1 processlist //每秒刷新一次
創(chuàng)建數(shù)據(jù)庫(kù) mysqladmin -uroot -p create daba-test
顯示服務(wù)器上的所有數(shù)據(jù)庫(kù) mysqlshow -uroot -p
顯示數(shù)據(jù)庫(kù)daba-test下有些什么表: mysqlshow -uroot -p daba-test
統(tǒng)計(jì)daba-test 下數(shù)據(jù)庫(kù)表列的匯總 mysqlshow -uroot -p daba-test -v
統(tǒng)計(jì)daba-test 下數(shù)據(jù)庫(kù)表的列數(shù)和行數(shù) mysqlshow -uroot -p daba-test -v -v
刪除數(shù)據(jù)庫(kù) daba-test mysqladmin -uroot -p drop daba-test 重載權(quán)限信息 mysqladmin -uroot -p reload 刷新所有表緩存,并關(guān)閉和打開log mysqladmin -uroot -p refresh 使用安全模式關(guān)閉數(shù)據(jù)庫(kù) mysqladmin -uroot -p shutdown 刷新命令mysqladmin flush commands mysqladmin -u root -ptmppassword flush-hosts mysqladmin -u root -ptmppassword flush-logs mysqladmin -u root -ptmppassword flush-privileges mysqladmin -u root -ptmppassword flush-status mysqladmin -u root -ptmppassword flush-tables mysqladmin -u root -ptmppassword flush-threads 停止和啟動(dòng)MySQL replication on a slave server mysqladmin -u root -p stop-slave mysqladmin -u root -p start-slave
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。