全部產品
Search
文件中心

Elastic Compute Service:在Linux執行個體中安裝MySQL資料庫

更新時間:Aug 29, 2024

MySQL是一種開放原始碼的關係型資料庫管理系統(RDBMS),MySQL資料庫系統使用結構化查詢語言 (SQL)(SQL)進行資料庫管理,適用於Web應用開發、公司專屬應用程式程式、資料分析和報告、軟體開發與測試等多種情境下的資料存放區和管理需求。本文介紹如何在Linux執行個體中部署MySQL資料庫。

操作步驟

手動部署MySQL時,已有ECS執行個體必須滿足以下條件:

  • 執行個體已指派公網IP地址或綁定Elastic IP Address(EIP)。

  • 作業系統:CentOS 7.x、Alibaba Cloud Linux 2、Alibaba Cloud Linux 3。

  • 執行個體安全性群組的入方向規則已允許存取22、80、443、3306連接埠。具體操作,請參見添加安全性群組規則

步驟一:安裝MySQL

  1. 遠端連線ECS執行個體。

    具體操作,請參見通過密碼或密鑰認證登入Linux執行個體

  2. 運行以下命令,更新YUM源。

    本操作以下載MySQL 8.0版本為例,如果您想下載其他版本的MySQL,請參見MySQL官方文檔

    sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
  3. (可選)當作業系統為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

  4. 運行以下命令,安裝MySQL。

    sudo yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck

    出現報錯:Unknown repo: 'mysql80-community'

    執行以下命令嘗試清理 YUM 緩衝並產生新的緩衝,清理完成後再次嘗試安裝命令

    sudo yum clean all
    sudo yum makecache
    sudo yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck
  5. 運行以下命令,查看MySQL版本號碼。

    mysql -V

    返回結果如下,表示MySQL安裝成功。

    mysql Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)

步驟二:配置MySQL

  1. 運行以下命令,查看mysql服務狀態。

    sudo systemctl status mysql

    mysql服務常見狀態:

    • active (running): 這表明MySQL服務正在運行,並且一切正常。

    • active (exited): 這個狀態不太常見於服務如MySQL,因為它通常意味著服務已經完成了它的任務並正常退出,而MySQL作為一個長期啟動並執行服務,期望狀態是(running)而不是(exited)

    • inactive (dead): 表明服務沒有運行。這可能是因為它從未啟動過,或者已經被停止。

    • failed: 如果服務啟動失敗或者運行過程中遇到嚴重錯誤導致終止,狀態將會顯示為failed

    • reloading (reload): 在極少數情況下,如果您恰好在服務重載配置時查看狀態,可能會看到這個狀態,但MySQL服務一般不使用reload操作。

    • activating (start): 當服務正在啟動過程中,可能會短暫出現這個狀態。

    說明

    除了狀態,輸出還會包含服務的詳細日誌資訊,比如服務啟動時間、主進程PID、以及可能的錯誤訊息或警告,這些都能協助診斷服務是否健康運行以及遇到問題時的原因。

  2. 運行以下命令,啟動並設定開機自啟動MySQL服務。

    sudo systemctl start mysqld
    sudo systemctl enable mysqld
  3. 運行以下命令,擷取並記錄root使用者的初始密碼。

    sudo grep 'temporary password' /var/log/mysqld.log

    執行​命令結果樣本如下。

    2022-02-14T09:27:18.470008Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: r_V&f2wyu_vI
    說明

    樣本末尾的r_V&f2wyu_vI為初始密碼,後續在對MySQL進行安全性配置時,需要使用該初始密碼。

  4. 運行以下命令,對MySQL進行安全性配置。

    sudo mysql_secure_installation
    1. 根據提示資訊,重設MySQL資料庫root使用者的密碼。

      說明

      在輸入密碼時,系統為了最大限度地保證資料安全,命令列將不做任何回顯。您只需要輸入正確的密碼資訊,然後按Enter鍵即可。

      Enter password for user root: #輸入已擷取的root使用者初始密碼
      
      The existing password for the user account root has expired. Please set a new password.
      
      New password: #輸入新的MySQL密碼
      
      Re-enter new password: #重複輸入新的MySQL密碼
      The 'validate_password' component is installed on the server.
      The subsequent steps will run with the existing configuration
      of the component.
      Using existing password for root.
      Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #輸入Y選擇更新MySQL密碼。您也可以輸入N不再更新MySQL密碼。
      
      New password: #輸入新的MySQL密碼
      
      Re-enter new password: #重複輸入新的MySQL密碼
      
      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 #輸入Y確認使用已設定的密碼。
    2. 根據提示資訊,刪除匿名使用者。

      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預設的匿名使用者。
      Success.
    3. 禁止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禁止root遠程登入。
      Success.
    4. 刪除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) :Y #輸入Y刪除test庫以及對test庫的存取權限。
       - Dropping test database...
      Success.
      
       - Removing privileges on test database...
      Success.
    5. 重新載入授權表。

      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) :Y #輸入Y重新載入授權表。
      Success.
      
      All done!

    安全性配置的更多資訊,請參見MySQL官方文檔

步驟三:遠端存取MySQL資料庫

建議您使用非root帳號遠程登入MySQL資料庫。下文樣本中,將建立新的MySQL帳號,用於遠端存取MySQL。

  1. 遠端連線ECS執行個體。

    關於串連方式的介紹,請參見ECS遠端連線方式概述

  2. 運行以下命令後,輸入root使用者的密碼登入MySQL。

    sudo mysql -uroot -p
  3. 依次運行以下命令,建立遠程登入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; 
  4. 執行以下命令,退出資料庫。

    exit
  5. 使用dmsTest帳號遠程登入MySQL。

    • (推薦)您可以通過阿里雲提供的Data Management(Data Management Service)來遠端存取MySQL資料庫。具體操作,請參見雲資料庫錄入

    • 您可以通過MySQL用戶端遠程登入MySQL進行測試。例如:MySQL Workbench、Navicat。

相關文檔

  • 如果您希望更方便地管理資料庫,並享有高可用、高可靠、高安全、可擴充的管理的資料庫服務,可以使用阿里雲雲資料庫RDS。RDS是阿里雲提供的穩定可靠、可Auto Scaling的關係型雲資料庫,支援MySQL、SQL Server、PostgreSQL和MariaDB引擎,具備容災、備份、恢複、遷移等方面的全套解決方案。更多資訊,請參見雲資料庫RDS簡介

  • 您可以通過資料移轉工具DTS,將自建資料庫平滑遷移到阿里雲資料庫上。具體操作,請參見資料庫遷移方案從自建MySQL遷移至RDS MySQL執行個體

  • Database BackupDBS(Database Backup)是阿里雲提供的低成本、高可靠的雲原生Database Backup平台,可協助您有效解決備份耗時耗成本等問題。更多資訊,請參見什麼是Database BackupDBS