在本中,,小編將講解如何在Ubuntu操作系統(tǒng)上配置MySQL服務器?它描述了如何設置root密碼,、創(chuàng)建數(shù)據(jù)庫以及為數(shù)據(jù)庫添加用戶,。該文章更詳細地檢查了MySQL配置,因此我們可以調整其配置并做好準備,,以防出現(xiàn)問題,。
一,、查找配置文件
默認情況下,,我們可以在以下位置找到MySQL配置文件:/etc/mysql
但是,,如果它們不存在,,我們可以使用mysqld來查找配置。運行以下命令:$ /usr/sbin/mysqld --help --verbose
冗長響應的第一部分描述了啟動服務器時可以發(fā)送到服務器的選項,。第二部分顯示服務器編譯期間的配置集,。
在輸出的開頭附近,找到類似于以下示例的幾行:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
服務器檢查該列表,,直到找到配置文件,。
二、my.cnf 配置文件
打開并查看/etc/mysql/my.cnf文件,。
以#開頭的注釋行記錄了不同設置的使用,。它們顯示有關日志文件、數(shù)據(jù)庫文件和其他詳細信息的位置的詳細信息,。
配置組
配置文件包含方括號中帶有單個單詞的行,,例如[client]或[mysqld],。這些部分是配置組。它們使重要的配置元素對讀取配置文件的程序更加可見,。
從技術上講,,服務器配置部分是一組工具。這包括服務器 ( mysqld),、客戶端 ( mysql) 和其他工具,。這些程序在my.cnf中查看它們應該如何表現(xiàn)。
客戶端配置部分控制mysql客戶端,,該mysqld部分控制服務器配置,。
三、日志文件
日志文件是開始對任何程序進行故障排除的最佳位置,。默認情況下,,MySQL將其日志文件存儲在以下目錄中:/var/log/mysql
我們可能需要使用sudo來獲取該目錄中的文件列表。
如果在默認目錄中找不到MySQL日志,,請檢查MySQL配置,。查看my.cnf文件并查找一行l(wèi)og_error,如:
log_error = /var/log/mysql/error.log
如果我們沒有看到這樣的一行,,請在mysqld部分創(chuàng)建一個,,這樣 MySQL就可以使用它自己的錯誤日志。使用示例中的位置,,創(chuàng)建/var/log/mysql目錄(如果尚不存在),。然后,重新啟動MySQL以進行更改,。
確保用戶可以通過控制mysql進程寫入所選的日志目錄,。運行該進程的用戶在my.cnf中mysqld的用戶配置值中定義。
四,、網絡設置
客戶端和服務器配置部分下可能都有“端口”設置,。服務器部分下的端口控制服務器監(jiān)聽的端口。默認端口是3306但是,,我們可以更改它,。
客戶端部分的端口告訴客戶端默認連接到哪個端口。我們通常希望兩個端口設置匹配,。
如果我們使用默認設置,,將不會在配置文件中看到端口條目。如果要更改端口,,請在適當?shù)念悇e中添加以下行:
[client]
port = 3306
[mysqld]
port = 3306
另一個要查找的網絡設置是綁定地址值,。這通常設置為本地主機的地址127.0.0.1。通過綁定到本地主機,服務器確保沒有人可以從本地計算機外部連接到它,。
如果我們在與自己的應用程序不同的計算機上運行MySQL服務器,,我們應該綁定到一個遠程可訪問的地址而不是本地主機。更改綁定地址設置以匹配我們的公共IP地址,。出于安全原因,,我們應該使用網絡上的后端IP地址。
如果我們沒有看到綁定地址條目,,應該將一個放入mysqld類別以幫助控制對服務器的訪問:
[mysqld]
$ bind-address = 127.0.0.1
請記住在設置數(shù)據(jù)庫用戶時考慮客戶端的主機名,,并在運行時提供防火墻訪問權限iptables。
五,、mysqld和mysqld_safe
在幕后,,有兩個版本的MySQL服務器,mysqld和mysqld_safe. 兩者都讀取相同的配置部分,。但是,,mysqld_safe啟用更多安全功能的啟動可以更輕松地從故障排除中恢復。
兩者mysqld都讀取mysqldmysqld_safe部分中的配置條目,。如果包含mysqld_safe部分,,則只有mysqld_safe使用這些值。
默認情況下,,MySQL服務會啟動mysqld_safe,,這是合適的。
六,、mysql管理員
該mysqladmin工具允許我們從命令行執(zhí)行一些本文未涉及的管理功能,。稍后我們可能會更深入地探索該工具以了解它的功能,尤其是當我們需要構建腳本來執(zhí)行諸如檢查服務器狀態(tài)或創(chuàng)建和刪除數(shù)據(jù)庫等功能時,。
七,、備份
除了通常的備份整個計算機方法之外,我們還有以下選項來備份數(shù)據(jù)庫,。主要的兩個選項是復制數(shù)據(jù)庫文件或使用mysqldump.
文件復制
默認情況下,,MySQL在其數(shù)據(jù)目錄/var/lib/mysql中為每個數(shù)據(jù)庫創(chuàng)建一個目錄。
找到數(shù)據(jù)目錄后,,請稍等片刻,,然后再復制它,。當數(shù)據(jù)庫服務器處于活動狀態(tài)時,,它會將新值寫入表。不要中斷此過程以避免可能損壞我們的備份,。
為確保我們干凈地復制了數(shù)據(jù)庫文件,,應該在復制之前完全關閉 MySQL服務器。
我們可以在復制期間將數(shù)據(jù)庫鎖定為只讀,。完成后,,釋放鎖,。這樣,我們的應用程序仍然可以在您備份文件時讀取數(shù)據(jù),。
通過從命令行運行以下命令將數(shù)據(jù)庫鎖定為只讀:
$ mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"
完成后運行以下命令解鎖數(shù)據(jù)庫:
$ mysql -u root -p -e "UNLOCK TABLES;"
MySQL客戶端選項-e告訴客戶端在引號中運行查詢,,就好像我們在 MySQL? shell中輸入它一樣。
如果您在腳本中編寫這些命令,,則可以將密碼放在引號中,,-p兩者之間沒有空格,類似于以下示例:
$ mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"
$ mysql -u root -p"password" -e "UNLOCK TABLES;"
出于密碼安全原因,,請確保對該文件設置權限以限制讀取訪問,。
八、mysql轉儲
備份數(shù)據(jù)庫的另一種方法是使用該mysqldump工具,。不是直接復制數(shù)據(jù)庫文件,,而是mysqldump生成一個代表數(shù)據(jù)庫的文本文件。默認情況下,,文本文件包含用于重新創(chuàng)建數(shù)據(jù)庫的SQL語句列表,,但我們也可以將數(shù)據(jù)庫導出為其他格式,如.CSV或.XML,。
生成的語句mysqldump直接進入標準輸出,。我們可以通過在命令行中運行以下命令來指定a以重定向輸出:
$ mysqldump -u root -p demodb > dbbackup.sql
此命令指示在SQL語句中mysqldump重新創(chuàng)建demodb數(shù)據(jù)庫并將它們寫入文件dbbackup.sql。請注意,,用戶名和密碼選項的功能與 MySQL客戶端相同,,因此我們可以-p在腳本后直接包含密碼。
從mysqldump恢復
恢復mysqldump數(shù)據(jù)庫類似于創(chuàng)建轉儲的方式,,但我們使用的是,,mysql而不是mysqldump,如以下恢復命令所示:
$ mysql -u root -p demodb < dbbackup.sql
另請注意,,<尖括號會改變方向,。這會將命令從重定向其輸出切換為從現(xiàn)有文件中提取輸入。該輸入被發(fā)送到mysql命令,,導致指令重新創(chuàng)建數(shù)據(jù)庫,。
默認情況下,生成的SQL語句會添加到現(xiàn)有數(shù)據(jù)庫表中,,而不是覆蓋它們,。如果要在現(xiàn)有數(shù)據(jù)庫上恢復備份,則應先刪除數(shù)據(jù)庫表,,或者刪除并重新創(chuàng)建數(shù)據(jù)庫本身,。我們可以通過將選項$ --add-drop-table與創(chuàng)建mysqldump. 這導致mysqldump向它寫入的備份文件添加一個命令,該命令在重新創(chuàng)建表之前刪除表。
九,、數(shù)據(jù)庫引擎
數(shù)據(jù)庫引擎是在幕后工作的進程,,從文件寫入和讀取數(shù)據(jù)。如果我們想運行針對特定數(shù)據(jù)庫引擎優(yōu)化的應用程序,,只需要了解這一點,。
需要表的應用程序按需創(chuàng)建它們并自動創(chuàng)建引擎類型。要查看數(shù)據(jù)庫表使用的引擎,,可以在MySQL shell中運行以下命令,,將demodb更改為數(shù)據(jù)庫的名稱:
$ SHOW TABLE STATUS FROM demodb;
選擇引擎
理想情況下,,我們不需要選擇引擎,。如果對MySQL不是很熟悉,請允許應用程序默認選擇一個,。如果我們正在編寫應用程序,,請使用默認引擎,直到對自己的選擇感到滿意為止,。
MySQL最常用的兩個數(shù)據(jù)庫引擎是MyISAM和InnoDB. MySQL 5.1 版及更早版本的默認數(shù)據(jù)庫引擎是MyISAM,,而InnoDB是從 MySQL 5.5 版開始的默認數(shù)據(jù)庫引擎。
MyISAM
因為MyISAM在 MySQL中已經默認了一段時間,,所以它是兩個主要引擎中最兼容的選擇,。某些類型的搜索MyISAM比InnoDB. 盡管它是兩者中較舊的一個,但它可能是給定應用程序類型的最佳選擇,。
InnoDB
InnoDB比數(shù)據(jù)庫更容錯,,MyISAM并以更小的數(shù)據(jù)庫損壞風險處理崩潰和恢復。
如果我們的應用程序需要InnoDB并且使用的是MySQL 5.1或更早版本,,則my.cnf配置文件中可能沒有任何設置,。如果我們在沒有太多內存的服務器上運行,這可能是個問題,。
以下設置可以讓我們在具有256兆RAM的共享服務器上開始使用 InnoDB:
innodb_buffer_pool_size = 32M
innodb_log_file_size = 8M
innodb_thread_concurrency = 8
innodb_file_per_table
將它們添加到配置文件的[mysqld]部分,。同樣,這些只是粗略的指南,。
以上是“在Ubuntu操作系統(tǒng)上配置MySQL服務器”相關教程,,希望能幫助到大家!
Copyright ? 2013-2020. All Rights Reserved. 恒訊科技 深圳市恒訊科技有限公司 粵ICP備20052954號 IDC證:B1-20230800.移動站