ubuntu?22.04安裝mysql?8.0步驟與避坑指南
前言
MySQL 是一個(gè)開源數(shù)據(jù)庫管理系統(tǒng),可作為流行的 LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆棧的一部分安裝。 它實(shí)現(xiàn)了關(guān)系模型并使用結(jié)構(gòu)化查詢語言( SQL)來管理其數(shù)據(jù)。
本教程將介紹如何在 Ubuntu 22.04 服務(wù)器上安裝 MySQL 8.0 版。 通過完成它,你將擁有一個(gè)可用的關(guān)系數(shù)據(jù)庫,并且可以使用它來構(gòu)建您的下一個(gè)網(wǎng)站或應(yīng)用程序。
安裝MySQL
在 Ubuntu 22.04 上,您可以使用 APT 包存儲庫安裝 MySQL。 在撰寫本文時(shí),默認(rèn) Ubuntu 存儲庫中可用的 MySQL 版本為 8.0.33 版。
sudo apt update sudo apt install mysql-server sudo systemctl start mysql.service
這些命令將安裝并啟動(dòng) MySQL,但不會提示設(shè)置密碼或進(jìn)行任何其他配置更改。
配置MySQL
對于 MySQL 的全新安裝,您需要運(yùn)行數(shù)據(jù)庫管理系統(tǒng)包含的安全腳本。 該腳本更改了一些不太安全的默認(rèn)選項(xiàng),例如不允許遠(yuǎn)程 root 登錄和刪除示例用戶。
警告:自 2022 年 7 月起,如果您在沒有進(jìn)一步配置的情況下運(yùn)行 mysql_secure_installation 腳本,將會發(fā)生錯(cuò)誤。 原因是此腳本將嘗試為安裝的根 MySQL 帳戶設(shè)置密碼,但默認(rèn)情況下在 Ubuntu 安裝上,此帳戶未配置為使用密碼進(jìn)行連接。
在 2022 年 7 月之前,此腳本會在嘗試設(shè)置根帳戶密碼并繼續(xù)執(zhí)行其余提示后靜默失敗。 然而,在撰寫本文時(shí),腳本將在您輸入并確認(rèn)密碼后返回以下錯(cuò)誤:
Output ... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters. New password:
這將導(dǎo)致腳本進(jìn)入遞歸循環(huán),您只能通過關(guān)閉終端窗口才能退出。
由于 mysql_secure_installation 腳本執(zhí)行許多其他操作,這些操作對確保 MySQL 安裝安全很有用,因此仍然建議您在開始使用 MySQL 管理數(shù)據(jù)之前運(yùn)行它。 但是,為避免進(jìn)入此遞歸循環(huán),您需要首先調(diào)整 root MySQL 用戶的身份驗(yàn)證方式。
首先進(jìn)入MySQL終端
sudo mysql
然后運(yùn)行以下 ALTER USER 命令將 root 用戶的身份驗(yàn)證方法更改為使用密碼的方法。 以下示例將身份驗(yàn)證方法更改為 mysql_native_password:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
然后退出MySQL
exit
之后,您可以毫無問題地運(yùn)行 mysql_secure_installation 腳本。
以sudo權(quán)限運(yùn)行mysql_secure_installation
sudo mysql_secure_installation
這將引導(dǎo)您完成一系列提示,您可以在其中對 MySQL 安裝的安全選項(xiàng)進(jìn)行一些更改。 第一個(gè)提示將詢問您是否要設(shè)置驗(yàn)證密碼插件,該插件可用于在將新 MySQL 用戶視為有效之前測試其密碼強(qiáng)度。
如果您選擇設(shè)置驗(yàn)證密碼插件,則您創(chuàng)建的任何使用密碼進(jìn)行身份驗(yàn)證的 MySQL 用戶都需要具有滿足您選擇的策略的密碼:
Output Securing the MySQL server deployment. Connecting to MySQL using a blank password. 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: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
無論您是否選擇設(shè)置驗(yàn)證密碼插件,下一個(gè)提示將是為 MySQL root 用戶設(shè)置密碼。 輸入并確認(rèn)您選擇的安全密碼:
Output Please set the password for root here. New password: Re-enter new password:
請注意,即使您已經(jīng)為 root MySQL 用戶設(shè)置了密碼,該用戶當(dāng)前未配置為在連接到 MySQL shell 時(shí)使用密碼進(jìn)行身份驗(yàn)證。
如果您使用了驗(yàn)證密碼插件,您將收到有關(guān)新密碼強(qiáng)度的反饋。 然后腳本將詢問您是否要繼續(xù)使用剛剛輸入的密碼,或者是否要輸入一個(gè)新密碼。 假設(shè)您對剛剛輸入的密碼的強(qiáng)度感到滿意,請輸入 Y 以繼續(xù)腳本:
Output 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,然后按 ENTER 接受所有后續(xù)問題的默認(rèn)值。 這將刪除一些匿名用戶和測試數(shù)據(jù)庫,禁用遠(yuǎn)程 root 登錄,并加載這些新規(guī)則,以便 MySQL 立即執(zhí)行您所做的更改。
注意:安全腳本完成后,您可以重新打開 MySQL 并將 root 用戶的身份驗(yàn)證方法改回默認(rèn)值 auth_socket。 要使用密碼以 root MySQL 用戶身份進(jìn)行身份驗(yàn)證,請運(yùn)行以下命令:
mysql -u root -p
然后使用此命令返回使用默認(rèn)身份驗(yàn)證方法:
這意味著您可以使用 sudo mysql 命令再次以 root 用戶身份連接到 MySQL。
腳本完成后,您的 MySQL 安裝將得到保護(hù)。 您現(xiàn)在可以繼續(xù)使用 MySQL 客戶端創(chuàng)建專用數(shù)據(jù)庫用戶。
創(chuàng)建專用 MySQL 用戶并授予權(quán)限
安裝后,MySQL 會創(chuàng)建一個(gè) root 用戶帳戶,您可以使用它來管理數(shù)據(jù)庫。 該用戶對 MySQL 服務(wù)器具有完全權(quán)限,這意味著它對每個(gè)數(shù)據(jù)庫、表、用戶等具有完全控制權(quán)。 因此,最好避免在管理功能之外使用此帳戶。 此步驟概述了如何使用 root MySQL 用戶創(chuàng)建新用戶帳戶并授予其權(quán)限。
一旦您有權(quán)訪問 MySQL 終端,您就可以使用 CREATE USER 語句創(chuàng)建一個(gè)新用戶。 這些遵循以下一般語法:
CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
在 CREATE USER 之后,您指定一個(gè)用戶名。 緊接著是一個(gè) @ 符號,然后是該用戶將從中連接的主機(jī)名。 如果您只打算從您的 Ubuntu 服務(wù)器本地訪問此用戶,您可以指定 localhost。 將用戶名和主機(jī)用單引號括起來并不總是必要的,但這樣做有助于防止錯(cuò)誤。
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
某些版本的 PHP 存在一個(gè)已知問題,會導(dǎo)致 caching_sha2_password 出現(xiàn)問題。 如果您計(jì)劃將此數(shù)據(jù)庫與 PHP 應(yīng)用程序(例如 phpMyAdmin)一起使用,您可能希望創(chuàng)建一個(gè)用戶,該用戶將使用較舊但仍然安全的 mysql_native_password 插件進(jìn)行身份驗(yàn)證:
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
如果您不確定,您始終可以創(chuàng)建一個(gè)使用 caching_sha2_plugin 進(jìn)行身份驗(yàn)證的用戶,然后稍后使用此命令對其進(jìn)行更改:
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
創(chuàng)建新用戶后,您可以授予他們適當(dāng)?shù)臋?quán)限。 授予用戶權(quán)限的一般語法如下(需要替換PRIVILEGE為CREATE等):
GRANT PRIVILEGE ON database.table TO 'username'@'host' WITH GRANT OPTION;
此示例語法中的 PRIVILEGE 值定義允許用戶對指定數(shù)據(jù)庫和表執(zhí)行的操作。 您可以在一個(gè)命令中向同一用戶授予多個(gè)權(quán)限,方法是用逗號分隔每個(gè)權(quán)限。 您還可以通過輸入星號 (*) 代替數(shù)據(jù)庫和表名稱來全局授予用戶權(quán)限。 在 SQL 中,星號是用于表示“所有”數(shù)據(jù)庫或表的特殊字符。
為了說明這一點(diǎn),以下命令授予用戶創(chuàng)建、更改和刪除數(shù)據(jù)庫、表和用戶的全局權(quán)限,以及從服務(wù)器上的任何表插入、更新和刪除數(shù)據(jù)的權(quán)力。 它還授予用戶使用 SELECT 查詢數(shù)據(jù)、使用 REFERENCES 關(guān)鍵字創(chuàng)建外鍵以及使用 RELOAD 權(quán)限執(zhí)行 FLUSH 操作的能力。 但是,您應(yīng)該只授予用戶他們需要的權(quán)限,因此請根據(jù)需要隨意調(diào)整您自己用戶的權(quán)限。
運(yùn)行此 GRANT 語句,將 sammy 替換為您自己的 MySQL 用戶名,以將這些權(quán)限授予您的用戶:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
請注意,此語句還包括 WITH GRANT OPTION。 這將允許您的 MySQL 用戶將其擁有的任何權(quán)限授予系統(tǒng)上的其他用戶。
警告:一些用戶可能想授予他們的 MySQL 用戶 ALL PRIVILEGES 權(quán)限,這將為他們提供類似于 root 用戶權(quán)限的廣泛超級用戶權(quán)限,如下所示:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
不應(yīng)輕易授予如此廣泛的權(quán)限,因?yàn)槿魏斡袡?quán)訪問此 MySQL 用戶的人都將完全控制服務(wù)器上的每個(gè)數(shù)據(jù)庫。
在此之后,最好運(yùn)行 FLUSH PRIVILEGES 命令。 這將釋放服務(wù)器由于前面的 CREATE USER 和 GRANT 語句而緩存的所有內(nèi)存:
FLUSH PRIVILEGES;
然后你就可以推出mysql終端
exit
將來,要以新的 MySQL 用戶身份登錄,您將使用如下命令:
mysql -u sammy -p
-p 標(biāo)志將導(dǎo)致 MySQL 客戶端提示您輸入 MySQL 用戶的密碼以進(jìn)行身份驗(yàn)證。
最后,讓我們測試一下MySQL的安裝。
測試MySQL
不管你如何安裝它,MySQL 應(yīng)該已經(jīng)自動(dòng)開始運(yùn)行了。 要對此進(jìn)行測試,請檢查其狀態(tài)。
systemctl status mysql.service
輸出內(nèi)容如下所示:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-06-13 15:43:21 CST; 35min ago Process: 248356 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 248364 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 18804) Memory: 371.1M CPU: 10.291s CGroup: /system.slice/mysql.service └─248364 /usr/sbin/mysqld
如果 MySQL 沒有運(yùn)行,您可以使用 sudo systemctl start mysql 啟動(dòng)它。
對于額外的檢查,您可以嘗試使用 mysqladmin 工具連接到數(shù)據(jù)庫,這是一個(gè)允許您運(yùn)行管理命令的客戶端。 例如,此命令表示以名為 sammy (-u sammy) 的 MySQL 用戶身份連接,提示輸入密碼 (-p),并返回版本。 請務(wù)必將 sammy 更改為您的專用 MySQL 用戶的名稱,并在出現(xiàn)提示時(shí)輸入該用戶的密碼:
sudo mysqladmin -p -u sammy version
以下是輸出示例:
mysqladmin Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu)) Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 8.0.33-0ubuntu0.22.04.2 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 37 min 20 sec Threads: 2 Questions: 41 Slow queries: 0 Opens: 199 Flush tables: 3 Open tables: 118 Queries per second avg: 0.018
這意味著 MySQL 已啟動(dòng)并正在運(yùn)行。
結(jié)論
至此,您現(xiàn)在已經(jīng)在服務(wù)器上安裝了基本的 MySQL 設(shè)置。
到此這篇關(guān)于ubuntu 22.04安裝mysql 8.0步驟與避坑指南的文章就介紹到這了,更多相關(guān)ubuntu22.04安裝mysql8.0內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- ubuntu 下的nginx服務(wù)器配置詳解
- ubuntu16.04服務(wù)器配置ssh免密碼登錄
- Ubuntu服務(wù)器配置apache2.4的限速功能shell腳本分享
- ubuntu上配置Nginx+PHP5 FastCGI服務(wù)器配置
- 在Ubuntu?Server?22.04上安裝?Docker的詳細(xì)步驟記錄
- Ubuntu?22.04或20.04安裝Oracle?SQL?Developer的圖文教程
- Ubuntu22.04系統(tǒng)下升級nodejs到v18版本
- Ubuntu22.04使用nginx部署vue前端項(xiàng)目的詳細(xì)教程
- Ubuntu22.04系統(tǒng):fatal:?無法連接到?github.com
- Ubuntu?22.04.1?LTS?編譯安裝?nginx-1.22.1的配置過程
- ubuntu 22.04搭建OpenVPN服務(wù)器的詳細(xì)圖文教程
- ubuntu22.04將python源切換為清華源的方法
- Ubuntu22.04 LTS 上安裝Redis的過程
- ubuntu22.04?server安裝及使用詳細(xì)圖文教程
- Ubuntu22.04安裝PyTorch1.12.1 GPU版本全過程
- Virtualbox 下 Ubuntu 22.04 網(wǎng)絡(luò)互通/固定IP 配置方法
- VMware?虛擬機(jī)圖文安裝和配置?Ubuntu?Server?22.04?LTS?的詳細(xì)步驟
- Ubuntu?22.04?服務(wù)器安裝部署(nginx+postgresql)
相關(guān)文章
Windows下通過MySQL Installer安裝MySQL服務(wù)的教程圖解
MYSQL官方提供了Installer方式安裝MYSQL服務(wù)以及其他組件,使的Windows下安裝,卸載,配置MYSQL變得特別簡單。接下來通過圖文并茂的形式給大家介紹Windows下通過MySQL Installer安裝MySQL服務(wù)的教程,一起看看吧2018-10-10CentOS7環(huán)境下安裝MySQL5.5數(shù)據(jù)庫
大家好,本篇文章主要講的是CentOS7環(huán)境下安裝MySQL5.5數(shù)據(jù)庫,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12mysql數(shù)據(jù)損壞,如何通過ibd和frm文件批量恢復(fù)數(shù)據(jù)庫數(shù)據(jù)
這篇文章主要介紹了mysql數(shù)據(jù)損壞,如何通過ibd和frm文件批量恢復(fù)數(shù)據(jù)庫數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08MySQL 5.6 & 5.7最優(yōu)配置文件模板(my.ini)
這篇文章主要介紹了MySQL 5.6 & 5.7最優(yōu)配置文件模板(my.ini),需要的朋友可以參考下2016-07-07MySQL8 臨時(shí)關(guān)閉緩存的方法實(shí)現(xiàn)
在某些場景下,如基準(zhǔn)測試、數(shù)據(jù)一致性檢查或高頻數(shù)據(jù)更新,可能需要臨時(shí)關(guān)閉緩存以獲得更準(zhǔn)確的性能數(shù)據(jù)或解決性能問題,本文就詳細(xì)的介紹一下MySQL8 臨時(shí)關(guān)閉緩存的方法實(shí)現(xiàn),感興趣的可以了解一下2024-10-10Mysql如何通過ibd文件恢復(fù)數(shù)據(jù)
這篇文章主要介紹了Mysql如何通過ibd文件恢復(fù)數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08