MySQL是一種開放源代碼的關系型數據庫管理系統(RDBMS),MySQL數據庫系統使用結構化查詢語言(SQL)進行數據庫管理,適用于Web應用開發、企業應用程序、數據分析和報告、軟件開發和測試等多種場景下的數據存儲和管理需求。本文介紹如何在Linux實例中部署MySQL數據庫。
安裝和配置MySQL數據庫
本文提供以下兩種部署方式,您可以根據需要選擇。
手動部署:適用于熟悉Linux操作系統,并且對所安裝軟件的版本及各軟件兼容性有所了解的用戶。
鏡像部署:在云市場購買MySQL鏡像直接創建ECS實例,創建完成后,即可使用MySQL數據庫。
方式一:手動部署MySQL數據庫
手動部署MySQL時,已有ECS實例必須滿足以下條件:
實例已分配公網IP地址或綁定彈性公網IP(EIP)。
操作系統:Alibaba Cloud Linux 3、Alibaba Cloud Linux 2、Ubuntu、Debian。
實例安全組的入方向規則已放行22、80、443、3306端口。具體操作,請參見添加安全組規則。
Alibaba Cloud Linux 3/2 & CentOS 7.x
步驟一:安裝MySQL
遠程連接ECS實例。具體操作,請參見使用Workbench工具以SSH協議登錄Linux實例。
(可選)當操作系統為Alibaba Cloud Linux 3時,請執行如下命令,安裝MySQL所需的庫文件。
sudo rpm -Uvh https://mirrors.aliyun.com/alinux/3/updates/x86_64/Packages/compat-openssl10-1.0.2o-4.0.1.al8.x86_64.rpm
您可以根據自己的需求選擇MySQL的版本并安裝RPM包,以下命令以安裝更新MySQL社區版的RPM倉庫為例,您應根據需要在MySQL 已歸檔版本倉庫中選擇相應的版本鏈接:
sudo rpm -Uvh [MySQL版本對應的RPM包鏈接]
例如,對于MySQL8.0,可以使用以下鏈接(請根據實際需要替換為正確的鏈接):
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
說明MySQL版本對應的RPM包鏈接中的
mysql80-community-release-el7-1
其中:el7: 代表RHEL 7或與其兼容的系統版本,如Alibaba Cloud Linux 2、CentOS 7。
el8: 代表RHEL 8或與其兼容的系統版本,如Alibaba Cloud Linux 3、CentOS 8、AlmaLinux 8或Rocky Linux 8。
el9: 代表RHEL 9或與其兼容的系統版本,如CentOS Stream 9或其他基于EL9的發行版。
請確保您選擇的倉庫配置與操作系統版本相匹配,以避免安裝過程中出現不必要的依賴問題或版本不兼容的錯誤。如果不確定系統版本,請運行
cat /etc/os-release
來查看詳細信息。根據用戶選擇的MySQl版本,使用以下命令,安裝MySQL。請將[MySQL版本]替換為實際的版本號。
sudo yum -y install mysql-community-server --enablerepo=mysql[MySQL版本]-community --nogpgcheck
例如,對于MySQL8.0,可以使用以下命令安裝MySQL。
sudo yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck
執行以下命令嘗試清理 YUM 緩存并生成新的緩存,清理完成后再次嘗試安裝命令。
sudo yum clean all sudo yum makecache sudo yum -y install mysql-community-server --enablerepo=mysql[MySQL版本]-community --nogpgcheck
運行以下命令,查看MySQL版本號。
mysql -V
返回結果如下,表示MySQL安裝成功。
mysql Ver 8.0.39 for Linux on x86_64 (MySQL Community Server - GPL)
步驟二:配置MySQL
運行以下命令,啟動并設置開機自啟動MySQL服務。
sudo systemctl start mysqld sudo systemctl enable mysqld
運行以下命令,查看MySQL服務狀態。
sudo systemctl status mysqld
mysql服務常見狀態:
active (running): 這表明MySQL服務正在運行,并且一切正常。
active (exited):此狀態在MySQL等服務中并不常見,因為它通常表示服務已完成其任務并正常退出。而MySQL作為一個長期運行的服務,其期望狀態應為
running
,而非exited
。inactive (dead): 表明服務沒有運行。這可能是因為它從未啟動過,或者已經被停止。
failed: 如果服務啟動失敗或者運行過程中遇到嚴重錯誤導致終止,狀態將會顯示為
failed
。reloading (reload): 在極少數情況下,如果您恰好在服務重載配置時查看狀態,可能會看到這個狀態,但MySQL服務一般不使用
reload
操作。activating (start): 當服務正在啟動過程中,可能會短暫出現這個狀態。
說明除了狀態,輸出還會包含服務的詳細日志信息,比如服務啟動時間、主進程PID、以及可能的錯誤消息或警告,這些都能幫助診斷服務是否健康運行以及遇到問題時的原因。
運行以下命令,獲取并記錄root用戶的初始密碼。
sudo grep 'temporary password' /var/log/mysqld.log
執行?命令結果示例如下。
2024-09-03T02:14:14.730031Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: D/B?W!4DwOua
說明示例末尾的
D/B?W!4DwOua
為初始密碼,后續在對MySQL進行安全性配置時,需要使用該初始密碼。運行以下命令,對MySQL進行安全性配置。
sudo mysql_secure_installation
根據提示信息,重置MySQL數據庫root用戶的密碼。
說明在輸入密碼時,系統為了最大限度地保證數據安全,命令行將不做任何回顯。您只需要輸入正確的密碼信息,然后按Enter鍵即可。
輸入已獲取的root用戶初始密碼:
Securing the MySQL server deployment. Enter password for user root:
重新設置您的MySQL服務密碼:
The existing password for the user account root has expired. Please set a new password. New password: Re-enter new password:
查看密碼強度并確認使用已設置的密碼
Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
根據提示信息,刪除匿名用戶。
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
禁止root賬號遠程登錄。
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
刪除test庫以及對test庫的訪問權限。
By default, MySQL 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? (Press y|Y for Yes, any other key for No) :
重新加載授權表。
Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
安全性配置的更多信息,請參見MySQL官方文檔。
Ubuntu & Debian
步驟一:安裝MySQL
添加MySQL APT Repository。
首先,運行如下命令導入MySQL的公鑰以確保軟件包的完整性和安全性:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb sudo dpkg -i mysql-apt-config_0.8.32-1_all.deb
運行上述命令后,會出現一個配置界面,使用空格鍵選擇您需要的MySQL版本,并確保"Ok"被標記,然后按Enter鍵確認,本文中以MySQL 8.0為例 。
更新APT源并安裝MySQL。
sudo apt-get update sudo apt-get install mysql-server
運行以下命令,查看MySQL版本。
mysql -V
返回結果類似如下所示,表示MySQL已成功安裝。
mysql Ver 8.0.36-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
步驟二:配置MySQL
運行以下命令,進入MySQL。
sudo mysql
運行以下命令,設置root用戶密碼。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '<YOUR_NEW_PASSWORD>';
運行以下命令,退出MySQL數據庫。
exit;
運行以下命令,對MySQL進行安全性配置。
sudo mysql_secure_installation
輸入第2步中設置的root用戶的密碼。
Securing the MySQL server deployment. Enter password for user root:
說明在輸入密碼時,系統為了最大限度地保證數據安全,命令行將不做任何回顯。您只需要輸入正確的密碼信息,然后按Enter鍵即可。
輸入Y,設置密碼驗證策略。
VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No:
根據提示,為MySQL服務器配置密碼強度驗證策略。
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
說明0 = LOW (低級) 這個選項設置的密碼策略較為寬松,僅要求密碼長度至少為8個字符。沒有其他關于必須包含數字、大小寫字母或特殊字符的要求。適用于對安全性要求不高的環境,但這種設置容易使密碼變得簡單且易被破解。
1 = MEDIUM(中級) 中等級別的密碼策略不僅要求密碼長度至少為8個字符,還強制要求密碼必須包含以下元素以提高安全性:
數字(0-9)
混合大小寫字母(A-Z, a-z)
特殊字符(如!@#$%^&*等)
這種策略能夠有效阻止簡單的密碼被使用,提升賬戶安全性。
2 = STRONG(高級) 最嚴格的密碼策略,除了滿足中等級別的所有條件外,還額外要求密碼不能出現在字典文件中。這意味著密碼不能是常見的單詞或短語,進一步增強了密碼的復雜度和安全性。這種策略最適合處理敏感數據或在高度安全要求的環境中使用。
輸入Y,更改root用戶密碼。
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
輸入root用戶密碼并確認root密碼。
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y New password: Re-enter new password: Estimated strength of the password: 100
輸入Y,確認使用已設置的密碼。
vDo you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
輸入Y刪除MySQL自帶的匿名用戶。
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : Y
輸入Y,禁止MySQL的root用戶的遠程登錄權限。
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? (Press y|Y for Yes, any other key for No) : Y
輸入Y,移除test數據庫。
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
輸入Y,重新加載授權表。
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
方式二:使用云市場鏡像部署MySQL數據庫
登錄ECS管理控制臺。
在左側導航欄,選擇 。
在頁面左側頂部,選擇目標資源所在的資源組和地域。
在實例列表頁面,單擊創建實例。
在自定義購買頁面的鏡像區域,單擊云市場鏡像,然后單擊從云市場獲取更多選擇(含操作系統)。
在鏡像市場對話框,選擇MySQL鏡像。
在左側導航欄單擊 。
在搜索框,輸入
mysql
,然后單擊搜索。選擇您想要使用的MySQL鏡像,單擊使用。
重要在使用鏡像前請務必單擊鏡像標題進入鏡像詳情頁,獲取并仔細閱讀鏡像信息與使用指南(包括賬號密碼及開放的安全組等)。
在自定義購買頁,鏡像區域已自動設置為您購買的鏡像。根據頁面提示,完成配置項并購買ECS實例。
配置時需注意:
為實例分配公網IPv4地址。
選擇前提條件中已配置的安全組。
其他配置您可以按需選擇。具體操作請參見自定義購買實例。
待新建實例狀態為運行中后,登錄ECS實例查看MySQL服務是否正常;ECS實例連接方式參見使用Workbench工具以SSH協議登錄Linux實例,
執行以下命令連接MySQL數據庫(數據庫密碼從云市場鏡像中對應的鏡像詳情中獲取):
sudo mysql -uroot -p[數據庫密碼]
遠程訪問MySQL數據庫
建議您使用非root賬號遠程登錄MySQL數據庫。下文示例中,將創建新的MySQL賬號,用于遠程訪問MySQL。
遠程連接ECS實例。
關于連接方式的介紹,請參見連接實例。
運行以下命令后,輸入root用戶的密碼登錄MySQL。
sudo mysql -uroot -p
依次運行以下命令,創建遠程登錄MySQL的賬號,并允許遠程主機使用該賬號訪問MySQL。
本示例賬號為
dmsTest
、密碼為Ecs@123****
。重要實際創建賬號時,需將示例密碼
Ecs@123****
更換為符合要求的密碼,并妥善保存。密碼要求:長度為8至30個字符,必須同時包含大小寫英文字母、數字和特殊符號。可以使用以下特殊符號:()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/
#創建數據庫用戶dmsTest,并授予遠程連接權限。 create user 'dmsTest'@'%' identified by 'Ecs@123****'; #為dmsTest用戶授權數據庫所有權限。 grant all privileges on *.* to 'dmsTest'@'%'; #刷新權限。 flush privileges;
執行以下命令,退出數據庫。
exit
使用
dmsTest
賬號遠程登錄MySQL。(推薦)您可以通過阿里云提供的數據管理服務DMS(Data Management Service)來遠程訪問MySQL數據庫。具體操作,請參見云數據庫錄入。
您可以通過MySQL客戶端遠程登錄MySQL進行測試。例如:MySQL Workbench、Navicat。
相關文檔
如果您希望更方便地管理數據庫,并享有高可用、高可靠、高安全、可擴展的托管數據庫服務,可以使用阿里云云數據庫RDS。RDS是阿里云提供的穩定可靠、可彈性伸縮的關系型云數據庫,支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,具備容災、備份、恢復、遷移等方面的全套解決方案。更多信息,請參見云數據庫RDS簡介。
您可以通過數據遷移工具DTS,將自建數據庫平滑遷移到阿里云數據庫上。具體操作,請參見數據庫遷移方案和從自建MySQL遷移至RDS MySQL實例。
數據庫備份DBS(Database Backup)是阿里云提供的低成本、高可靠的云原生數據庫備份平臺,可幫助您有效解決備份耗時耗成本等問題。更多信息,請參見什么是數據庫備份DBS。