MySQL™ 參考手冊(在Linux上安裝MySQL)

在Linux上安裝MySQL

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。

使用MySQL Yum存儲庫在Linux上安裝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的步驟

按照如下步驟使用MySQL Yum存儲庫安裝最新的GA版本的MySQL:數據庫

添加MySQL Yum存儲庫

首先,將MySQL Yum存儲庫添加到系統的存儲庫列表中,這是一次性操做,能夠經過安裝MySQL提供的RPM來執行,跟着這些步驟:服務器

  • 轉到MySQL Developer Zone中的下載MySQL Yum存儲庫頁面(https://dev.mysql.com/downloa...)。
  • 選擇並下載適用於你的平臺的發行包。
  • 使用如下命令安裝下載的發行包,將platform-and-version-specific-package-name替換爲下載的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-managerdnf 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

經過如下命令安裝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 Server

使用如下命令啓動MySQL服務器:

shell> sudo service mysqld start
Starting mysqld:[ OK ]

你可使用如下命令檢查MySQL服務器的狀態:

shell> sudo service mysqld status
mysqld (pid 3066) is running.

在服務器初始啓動時,若是服務器的數據目錄爲空,則會發生如下狀況:

  • 服務器已初始化。
  • SSL證書和密鑰文件在數據目錄中生成。
  • 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_passwordvalidate_password實現的默認密碼策略要求密碼至少包含一個大寫字母、一個小寫字母、一個數字和一個特殊字符,而且密碼長度至少爲8個字符。

基於EL7的平臺的兼容性信息:如下來自平臺的原生軟件存儲庫的RPM軟件包與安裝MySQL服務器的MySQL Yum存儲庫中的軟件包不兼容。使用MySQL Yum存儲庫安裝MySQL後,你將沒法安裝這些軟件包(反之亦然)。

  • akonadi-mysql

使用Yum安裝額外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路徑。

用Yum更新MySQL

除了安裝,你還可使用MySQL Yum存儲庫對MySQL產品和組件執行更新。

使用MySQL APT存儲庫在Linux上安裝MySQL

MySQL APT存儲庫提供了用於在如下Linux平臺上安裝和管理MySQL服務器、客戶端和其餘組件的deb軟件包:

  • Debian 9
  • Ubuntu 16.04,17.10和18.04

有關使用MySQL APT存儲庫的說明,請參閱使用MySQL APT存儲庫的快速指南

使用MySQL SLES存儲庫在Linux上安裝MySQL

MySQL SLES存儲庫提供RPM軟件包,用於在SUSE Enterprise Linux Server上安裝和管理MySQL服務器、客戶端和其餘組件。

有關使用MySQL SLES存儲庫的說明,請參閱使用MySQL SLES存儲庫的快速指南

使用Oracle的RPM軟件包在Linux上安裝MySQL

在基於RPM的Linux發行版上安裝MySQL的推薦方法是使用Oracle提供的RPM包,對於社區版MySQL,有兩個獲取它們的來源:

MySQL的RPM發行版也由其餘供應商提供,請注意,它們可能與Oracle在特性、功能和約定(包括通訊設置)中構建的不一樣,而且本手冊中的安裝說明不必定適用於它們,應該諮詢供應商的說明。

MySQL RPM包

MySQL社區版的RPM包

包名 概要
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企業版的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

distributionarch值表示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-servermysql-community-clientmysql-community-libsmysql-community-commonmysql-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)命令(如stopstartstatusrestart)來管理MySQL服務器服務。mysqld服務默認啓用,它在系統重啓時啓動,請注意,某些事情在systemd平臺上可能會有所不一樣:例如,更改數據目錄的位置可能會致使問題。

在使用RPM軟件包進行升級安裝期間,若是升級發生時MySQL服務器正在運行,則MySQL服務器將中止,升級發生,MySQL服務器從新啓動。一個例外:若是版本在升級過程當中也發生了變化(例如社區變爲商業版,反之亦然),則MySQL服務器不會從新啓動。

在服務器初始啓動時,若是服務器的數據目錄爲空,則會發生如下狀況:

  • 服務器已初始化
  • 在數據目錄中生成SSL證書和密鑰文件。
  • 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_passwordvalidate_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。

相關文章
相關標籤/搜索