Linux支持許多不一樣的安裝MySQL的解決方案,建議使用Oracle提供的發行版中之一,其中有幾種安裝方法可供使用:mysql
類型 | 安裝方法 |
---|---|
Apt | 啓用MySQL Apt存儲庫 |
Yum | 啓用MySQL Yum存儲庫 |
Zypper | 啓用MySQL SLES存儲庫 |
RPM | 下載特定包 |
DEB | 下載特定包 |
Generic | 下載通用包 |
Source | 從源代碼編譯 |
Docker | 使用Docker Hub for MySQL Community Edition 從My Oracle Support下載MySQL Enterprise Edition的Docker鏡像 |
Oracle Unbreakable Linux Network | 使用ULN渠道 |
做爲備選項,你可使用系統上的軟件包管理器自動從Linux發行版的原生軟件存儲庫下載和安裝MySQL軟件包,這些原生包一般是當前可用版本的幾個版本。你一般也沒法安裝開發里程碑版本(DMR),由於這些版本一般不在原生存儲庫中提供。c++
對於許多Linux安裝,你須要設置MySQL以在計算機啓動時自動啓動,許多原生程序包安裝都會爲你執行此操做,但對於源代碼、二進制和RPM解決方案,你可能須要單獨進行此設置。所需的腳本mysql.server
能夠在MySQL安裝目錄下的support-files
目錄中找到,也能夠在MySQL源代碼樹中找到,你能夠將其安裝爲/etc/init.d/mysql
以自動啓動和關閉MySQL。
Oracle Linux、Red Hat Enterprise Linux、CentOS和Fedora的MySQL Yum存儲庫提供了用於安裝MySQL服務器、客戶端、MySQL Workbench、MySQL實用程序、MySQL路由器、MySQL Shell、Connector/ODBC、Connector/Python等的RPM包(並不是全部的包都適用於全部發行版)。sql
做爲一種流行的開源軟件,MySQL以其原始或從新打包的形式普遍安裝在許多系統上,來自各類來源,包括不一樣的軟件下載站點、軟件存儲庫等等,如下說明假定你的系統上還沒有使用第三方發行的RPM軟件包安裝MySQL。shell
按照如下步驟使用MySQL Yum存儲庫安裝最新的GA版本的MySQL:數據庫
首先,將MySQL Yum存儲庫添加到系統的存儲庫列表中,這是一次性操做,能夠經過安裝MySQL提供的RPM來執行,跟着這些步驟:服務器
shell> sudo yum localinstall platform-and-version-specific-package-name.rpm
對於基於EL6的系統,該命令採用如下形式:oracle
shell> sudo yum localinstall mysql80-community-release-el6-{version-number}.noarch.rpm
對於基於EL7的系統:ide
shell> sudo yum localinstall mysql80-community-release-el7-{version-number}.noarch.rpm
對於Fedora 30:工具
shell> sudo dnf localinstall mysql80-community-release-fc30-{version-number}.noarch.rpm
對於Fedora 29:佈局
shell> sudo dnf localinstall mysql80-community-release-fc29-{version-number}.noarch.rpm
安裝命令將MySQL Yum存儲庫添加到系統的存儲庫列表中,並下載GnuPG密鑰以檢查軟件包的完整性。
你能夠經過如下命令檢查MySQL Yum存儲庫是否已成功添加(對於啓用了dnf的系統,使用dnf替換命令中的yum):
shell> yum repolist enabled | grep "mysql.*-community.*"
一旦在你的系統上啓用了MySQL Yum存儲庫, Yum update命令(或支持dnf的系統的 dnf upgrade)執行的任何系統範圍內的更新都將在你的系統上升級MySQL包,而且若是Yum在MySQL Yum存儲庫中找到替代包,還將替換任何原生第三方包。
使用MySQL Yum存儲庫時,默認選擇安裝最新的GA系列(當前爲MySQL 8.0),若是這是你想要的,你能夠跳到下一步,安裝MySQL。
在MySQL Yum存儲庫中,MySQL社區服務器的不一樣發行版系列託管在不一樣的子存儲庫中,默認狀況下啓用最新GA系列(當前爲MySQL 8.0)的子存儲庫,默認狀況下禁用全部其餘系列的子存儲庫(例如,MySQL 8.0系列)。使用此命令查看MySQL Yum存儲庫中的全部子存儲庫,並查看哪些子存儲庫已啓用或禁用(對於支持dnf的系統,請使用dnf替換命令中的yum):
shell> yum repolist all | grep mysql
要從最新的GA系列安裝最新版本,無需進行任何配置,要從最新GA系列之外的特定系列安裝最新版本,請在運行安裝命令以前禁用最新GA系列的子存儲庫並啓用特定系列的子存儲庫。若是你的平臺支持yum-config-manager,你能夠經過發出這些命令來執行此操做,這些命令禁用5.7系列的子存儲庫並啓用8.0系列的子存儲庫:
shell> sudo yum-config-manager --disable mysql57-community shell> sudo yum-config-manager --enable mysql80-community
對於支持dnf的平臺:
shell> sudo dnf config-manager --disable mysql57-community shell> sudo dnf config-manager --enable mysql80-community
除了使用yum-config-manager或dnf config-manager命令外,你還能夠經過手動編輯/etc/yum.repos.d/mysql-community.repo
文件來選擇發行系列,這是文件中發行系列的子存儲庫的典型條目:
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
找到要配置的子存儲庫的條目,而後編輯enabled
選項,指定enabled=0
以禁用子存儲庫,或者enabled=1
以啓用子存儲庫。例如,要安裝MySQL 8.0,請確保爲MySQL 5.7的上述子存儲庫條目enabled=0
,而且對於8.0系列的條目enabled=1
:
# Enable to use MySQL 8.0 [mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
你應該只在任什麼時候候爲一個發行系列啓用子存儲庫,當啓用多個版本系列的子存儲庫時,Yum將使用最新的系列。
經過運行如下命令並檢查其輸出來驗證是否已啓用和禁用了正確的子存儲庫(對於啓用dnf的系統,請使用dnf替換命令中的yum):
shell> yum repolist enabled | grep mysql
經過如下命令安裝MySQL(對於支持dnf的系統,使用dnf替換命令中的yum):
shell> sudo yum install mysql-community-server
這將安裝MySQL服務器(mysql-community-server
)的軟件包以及運行服務器所需組件的軟件包,包括客戶端的包(mysql-community-client
),客戶端和服務器的常見錯誤消息和字符集(mysql-community-common
),以及共享客戶端庫(mysql-community-libs
)。
使用如下命令啓動MySQL服務器:
shell> sudo service mysqld start Starting mysqld:[ OK ]
你可使用如下命令檢查MySQL服務器的狀態:
shell> sudo service mysqld status mysqld (pid 3066) is running.
在服務器初始啓動時,若是服務器的數據目錄爲空,則會發生如下狀況:
validate_password
已安裝並啓用。'root'@'localhost'
,設置超級用戶的密碼並將其存儲在error log文件中,要顯示它,請使用如下命令:shell> sudo grep 'temporary password' /var/log/mysqld.log
經過使用生成的臨時密碼登陸併爲超級用戶賬戶設置自定義密碼,儘快更改root密碼:
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
默認狀況下安裝validate_password
,validate_password
實現的默認密碼策略要求密碼至少包含一個大寫字母、一個小寫字母、一個數字和一個特殊字符,而且密碼長度至少爲8個字符。
基於EL7的平臺的兼容性信息:如下來自平臺的原生軟件存儲庫的RPM軟件包與安裝MySQL服務器的MySQL Yum存儲庫中的軟件包不兼容。使用MySQL Yum存儲庫安裝MySQL後,你將沒法安裝這些軟件包(反之亦然)。
- akonadi-mysql
你可使用Yum來安裝和管理MySQL的各個組件,其中一些組件託管在MySQL Yum存儲庫的子存儲庫中:例如,MySQL Connectors能夠在MySQL Connectors社區子存儲庫中找到,而MySQL Workbench能夠在MySQL Tools社區中找到。你可使用如下命令從MySQL Yum存儲庫列出適用於你的平臺的全部MySQL組件的軟件包(對於支持dnf的系統,使用dnf替換命令中的yum):
shell> sudo yum --disablerepo=\* --enablerepo='mysql*-community*' list available
使用如下命令安裝你選擇的任何軟件包,將package-name替換爲軟件包的名稱(對於支持dnf的系統,請使用dnf替換命令中的yum):
shell> sudo yum install package-name
例如,要在Fedora上安裝MySQL Workbench:
shell> sudo dnf install mysql-workbench-community
要安裝共享客戶端庫(對於支持dnf的系統,請使用dnf替換命令中的yum):
shell> sudo yum install mysql-community-libs
ARM支持
Oracle Linux 7支持ARM 64位(aarch64),須要Oracle Linux 7軟件集合存儲庫(ol7_software_collections),例如,要安裝服務器:
shell> yum-config-manager --enable ol7_software_collections shell> yum install mysql-community-server
從MySQL 8.0.12開始,Oracle Linux 7支持ARM 64位(aarch64)。
已知限制8.0.12版本要求你在執行
yum install
步驟後執行ln /opt/oracle/oracle-armtoolset-1/root/usr/lib64 /usr/lib64/gcc7
來調整libstdc++ 7
路徑。
除了安裝,你還可使用MySQL Yum存儲庫對MySQL產品和組件執行更新。
MySQL APT存儲庫提供了用於在如下Linux平臺上安裝和管理MySQL服務器、客戶端和其餘組件的deb
軟件包:
有關使用MySQL APT存儲庫的說明,請參閱使用MySQL APT存儲庫的快速指南。
MySQL SLES存儲庫提供RPM軟件包,用於在SUSE Enterprise Linux Server上安裝和管理MySQL服務器、客戶端和其餘組件。
有關使用MySQL SLES存儲庫的說明,請參閱使用MySQL SLES存儲庫的快速指南。
在基於RPM的Linux發行版上安裝MySQL的推薦方法是使用Oracle提供的RPM包,對於社區版MySQL,有兩個獲取它們的來源:
來自MySQL軟件存儲庫:
MySQL的RPM發行版也由其餘供應商提供,請注意,它們可能與Oracle在特性、功能和約定(包括通訊設置)中構建的不一樣,而且本手冊中的安裝說明不必定適用於它們,應該諮詢供應商的說明。
包名 | 概要 |
---|---|
mysql-community-client | MySQL客戶端應用程序和工具 |
mysql-community-common | 服務器和客戶端庫的公共文件 |
mysql-community-devel | 用於MySQL數據庫客戶端應用程序的開發頭文件和庫 |
mysql-community-embedded-compat | MySQL服務器做爲嵌入式庫,兼容使用庫版本18的應用程序 |
mysql-community-libs | MySQL數據庫客戶端應用程序的共享庫 |
mysql-community-libs-compat | 之前的MySQL安裝的共享兼容庫 |
mysql-community-server | 數據庫服務器和相關工具 |
mysql-community-server-debug | Debug服務器和插件二進制文件 |
mysql-community-test | MySQL服務器的測試套件 |
mysql-community | 源代碼RPM看起來相似於mysql-community-8.0.19-1.el7.src.rpm ,具體取決於所選的操做系統 |
包名 | 概要 |
---|---|
mysql-commercial-backup | MySQL企業備份(在8.0.11中添加) |
mysql-commercial-client | MySQL客戶端應用程序和工具 |
mysql-commercial-common | 服務器和客戶端庫的公共文件 |
mysql-commercial-devel | 用於MySQL數據庫客戶端應用程序的開發頭文件和庫 |
mysql-commercial-embedded-compat | MySQL服務器做爲嵌入式庫,兼容使用庫版本18的應用程序 |
mysql-commercial-libs | MySQL數據庫客戶端應用程序的共享庫 |
mysql-commercial-libs-compat | 之前的MySQL安裝的共享兼容庫 庫的版本與你正在使用的發行默認安裝的庫的版本匹配 |
mysql-commercial-server | 數據庫服務器和相關工具 |
mysql-commercial-test | MySQL服務器的測試套件 |
RPM的全名具備如下語法:
packagename-version-distribution-arch.rpm
distribution和arch值表示Linux發行版和構建包的處理器類型,有關發行版標識符的列表,請參閱下表:
distribution值 | 預期用途 |
---|---|
el六、el7 | Red Hat Enterprise Linux/Oracle Linux/CentOS 6 或 7 |
fc29 fc30 | Fedora 29和30 |
sles12 | SUSE Linux Enterprise Server 12 |
要查看RPM包中的全部文件(例如,mysql-community-server
),請使用如下命令:
shell> rpm -qpl mysql-community-server-version-distribution-arch.rpm
本節其他部分的討論僅適用於使用直接從Oracle下載的RPM軟件包而不是經過MySQL存儲庫的安裝過程。
某些包之間存在依賴關係,若是你計劃安裝許多軟件包,你可能但願下載RPM軟件包tar文件,其中包含上面列出的全部RPM軟件包,所以你無需單獨下載它們。
在大多數狀況下,你須要安裝mysql-community-server
、mysql-community-client
、mysql-community-libs
、mysql-community-common
和mysql-community-libs-compat
軟件包才能得到功能齊全的標準MySQL安裝。要執行此類標準的基本安裝,請轉到包含全部這些軟件包的文件夾(最好不要包含其餘具備類似名稱的RPM軟件包),而後發出如下命令:
shell> sudo yum install mysql-community-{server,client,common,libs}-*
用zypper替換yum用於SLES,用dnf替換yum用於Fedora。
雖然使用像yum這樣的高級包管理工具來安裝軟件包更爲可取,可是喜歡直接rpm命令的用戶可使用rpm -Uvh
命令替換yum install
命令,可是,使用rpm -Uvh
會使安裝過程更容易出錯,由於安裝過程可能會遇到潛在的依賴性問題。
要僅安裝客戶端程序,能夠跳過要安裝的軟件包列表中的mysql-community-server
,發出如下命令:
shell> sudo yum install mysql-community-{client,common,libs}-*
用zypper替換yum用於SLES,用dnf替換yum用於Fedora。
使用RPM軟件包的MySQL標準安裝會致使在系統目錄下建立文件和資源,以下表所示。
來自MySQL Developer Zone的Linux RPM軟件包的MySQL安裝佈局
文件或資源 | 位置 |
---|---|
客戶端程序和腳本 | /usr/bin |
mysqld 服務器 |
/usr/sbin |
配置文件 | /etc/my.cnf |
數據目錄 | /var/lib/mysql |
錯誤日誌文件 | 對於RHEL、Oracle Linux、CentOS或Fedora平臺:/var/log/mysqld.log 對於SLES: /var/log/mysql/mysqld.log |
secure_file_priv 的值 |
/var/lib/mysql-files |
System V init腳本 | 對於RHEL、Oracle Linux、CentOS或Fedora平臺:/etc/init.d/mysqld 對於SLES: /etc/init.d/mysql |
Systemd service | 對於RHEL、Oracle Linux、CentOS或Fedora平臺:mysqld 對於SLES: mysql |
Pid文件 | /var/run/mysql/mysqld.pid |
Socket | /var/lib/mysql/mysql.sock |
密鑰串目錄 | /var/lib/mysql-keyring |
Unix手冊頁 | /usr/share/man |
包含(頭)文件 | /usr/include/mysql |
庫 | /usr/lib/mysql |
其餘支持文件(例如,錯誤消息和字符集文件) | /usr/share/mysql |
安裝還會在系統上建立名爲mysql
的用戶和名爲mysql
的組。
使用舊軟件包安裝之前版本的MySQL可能會建立一個名爲/usr/my.cnf
的配置文件,強烈建議你檢查文件的內容並將所需的設置遷移到文件/etc/my.cnf
文件中,而後刪除/usr/my.cnf
。
MySQL不會在安裝過程結束時自動啓動,對於Red Hat Enterprise Linux、Oracle Linux、CentOS和Fedora系統,請使用如下命令啓動MySQL:
shell> systemctl start mysqld
對於SLES系統,命令相同,但服務名稱不一樣:
shell> systemctl start mysql
若是操做系統已啓用systemd,則應使用標準systemctl(或者帶有反轉參數的service)命令(如stop
、start
、status
和restart
)來管理MySQL服務器服務。mysqld
服務默認啓用,它在系統重啓時啓動,請注意,某些事情在systemd平臺上可能會有所不一樣:例如,更改數據目錄的位置可能會致使問題。
在使用RPM軟件包進行升級安裝期間,若是升級發生時MySQL服務器正在運行,則MySQL服務器將中止,升級發生,MySQL服務器從新啓動。一個例外:若是版本在升級過程當中也發生了變化(例如社區變爲商業版,反之亦然),則MySQL服務器不會從新啓動。
在服務器初始啓動時,若是服務器的數據目錄爲空,則會發生如下狀況:
validate_password
已安裝並啓用。'root'@'localhost'
,設置超級用戶的密碼並將其存儲在錯誤日誌文件中,要顯示它,請對RHEL、Oracle Linux、CentOS和Fedora系統使用如下命令:shell> sudo grep 'temporary password' /var/log/mysqld.log
對SLES系統使用如下命令:
shell> sudo grep 'temporary password' /var/log/mysql/mysqld.log
下一步是使用生成的臨時密碼登陸併爲超級用戶賬戶設置自定義密碼:
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
默認狀況下安裝validate_password
,validate_password
實現的默認密碼策略要求密碼至少包含一個大寫字母、一個小寫字母、一個數字和一個特殊字符,而且密碼長度至少爲8個字符。
若是在安裝過程當中出現問題,你可能會在錯誤日誌文件/var/log/mysqld.log
中找到調試信息。
從多個MySQL版本安裝客戶端庫。能夠安裝多個客戶端庫版本,例如,你但願保持與之前庫連接的舊應用程序的兼容性,要安裝較舊的客戶端庫,請使用rpm的--oldpackage
選項。例如,要在具備來自MySQL 8.0的libmysqlclient.21
的EL6系統上安裝mysql-community-libs-5.5
,請使用以下命令:
shell> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
調試包。使用調試包編譯的MySQL Server的特殊變體已包含在服務器RPM包中,它執行調試和內存分配檢查,並在服務器運行時生成跟蹤文件,要使用該調試版本,請使用/usr/sbin/mysqld-debug
啓動MySQL,而不是將其做爲服務啓動或使用/usr/sbin/mysqld
啓動。
在MySQL 8.0.4中調試版本的默認插件目錄從/usr/lib64/mysql/plugin
更改成/usr/lib64/ mysql/plugin/debug
,在此以前,有必要將plugin_dir
更改成/usr/lib64/mysql/plugin/debug
以進行調試構建。
從源SRPM重建RPM。源代碼MySQL的SRPM包可供下載,它們能夠按原樣用於使用標準rpmbuild工具鏈重建MySQL RPM。