全部產品
Search
文件中心

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

更新時間:Dec 11, 2024

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

安裝和配置MySQL資料庫

本文提供以下兩種部署方式,您可以根據需要選擇。

  • 手動部署:適用於熟悉Linux作業系統,並且對所安裝軟體的版本及各軟體相容性有所瞭解的使用者。

  • 鏡像部署:在雲市場購買MySQL鏡像直接建立ECS執行個體,建立完成後,即可使用MySQL資料庫。

方式一:手動部署MySQL資料庫

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

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

  • 作業系統:Alibaba Cloud Linux 3、Alibaba Cloud Linux 2、Ubuntu、Debian。

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

Alibaba Cloud Linux 3/2 & CentOS 7.x

步驟一:安裝MySQL

  1. 遠端連線ECS執行個體。具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  2. (可選)當作業系統為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
  3. 您可以根據自己的需求選擇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來查看詳細資料。

  4. 根據使用者選擇的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

    出現報錯:Unknown repo: 'mysql[MySQL版本]-community'

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

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

    mysql -V

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

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

步驟二:配置MySQL

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

    sudo systemctl start mysqld
    sudo systemctl enable mysqld
  2. 運行以下命令,查看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、以及可能的錯誤訊息或警告,這些都能協助診斷服務是否健康運行以及遇到問題時的原因。

  3. 運行以下命令,擷取並記錄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進行安全性配置時,需要使用該初始密碼。

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

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

      說明

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

      1. 輸入已擷取的root使用者初始密碼:

        Securing the MySQL server deployment.
        Enter password for user root: 
      2. 重新設定您的MySQL服務密碼:

        The existing password for the user account root has expired. Please set a new password.
        New password: 
        Re-enter new password: 
      3. 查看密碼強度並確認使用已設定的密碼

        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 
      4. 根據提示資訊,刪除匿名使用者。

        Remove anonymous users? (Press y|Y for Yes, any other key for No) :
      5. 禁止root帳號遠程登入。

        Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
      6. 刪除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) : 
      7. 重新載入授權表。

        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

  1. 添加MySQL APT Repository。

    1. 首先,運行如下命令匯入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為例 。

      image

    2. 更新APT源並安裝MySQL。

      sudo apt-get update
      sudo apt-get install mysql-server
  2. 運行以下命令,查看MySQL版本。

    mysql -V

    返回結果類似如下所示,表示MySQL已成功安裝。

    mysql  Ver 8.0.36-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

步驟二:配置MySQL

  1. 運行以下命令,進入MySQL。

    sudo mysql
  2. 運行以下命令,設定root使用者密碼。

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '<YOUR_NEW_PASSWORD>';
  3. 運行以下命令,退出MySQL資料庫。

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

    sudo mysql_secure_installation
    1. 輸入第2步中設定的root使用者的密碼。

      Securing the MySQL server deployment.
      Enter password for user root: 
      說明

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

    2. 輸入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: 
    3. 根據提示,為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(進階) 最嚴格的密碼原則,除了滿足中等層級的所有條件外,還其他需求密碼不能出現在字典檔案中。這意味著密碼不能是常見的單詞或短語,進一步增強了密碼的複雜度和安全性。這種策略最適合處理敏感性資料或在高度安全要求的環境中使用。

    4. 輸入Y,更改root使用者密碼。

      Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
    5. 輸入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 
    6. 輸入Y,確認使用已設定的密碼。

      vDo you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
    7. 輸入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
    8. 輸入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
    9. 輸入Y,移除test資料庫。

      Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 
    10. 輸入Y,重新載入授權表。

      Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

遠端存取MySQL資料庫

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

  1. 遠端連線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