MySQL 的幾種進入方式


  對於碼農一族來說,新入手電腦后,工具安裝,環境搭建是為必備功課。環境搭不好工具裝不全,后續的工作開展那就會有相當多的痛點,也會耗去相當多的時間和精力。近日,博主在安裝 Mysql 數據庫的過程中,一番探究,發現平日里最基本的操作,也有很多值得總結的地方,為免於時間的重復性浪費,於是有了以下的內容分享。先來問問你自己,平時安裝數據庫的時候,都嘗試過哪幾種方式?博主稍微一探究,發現還真不少,比如 Windows 上可以程序安裝也可以解壓免安裝使用;Linux系統可以用 Yum安裝二進制文件安裝,源碼編譯安裝等;更還有一些方式,比如安裝虛擬機的時候可以選擇 MySQL作為預裝軟件安裝同虛擬機一起安裝,再比如世界上最好的語言 PHP 中有phpStudy 程序集成包,安裝該包之后也就順帶安裝上了MySQL服務,等等。通過簡單的發散,你會發現,雖然都是以安裝同一種工具為目的,但是技術的實現方式卻有N多種,所以,騷年們,技術路上永遠不要局限在會某種技術,而是要盡可能多的尋找替代方案、更優方案,不然出去裝逼都沒點逼數,這怎么行!因為平時常用的就是 Windows 和 Linux 這兩種操作系統,所以博主就來總結下在這兩種系統下的Mysql的幾種常見的安裝方式。(下載入口

1 Windows系統

 1.1  程序安裝版(msi)

  根據上面的鏈接入口,進入官網下載頁面后,找到下圖中對應的下載位置 。程序安裝版是官網推薦的安裝版本,點擊 推薦下載區域 鏈接到安裝版下載頁,選擇對應的安裝包,點擊下載,在新界面不用登錄或注冊,直接點擊開始下載即可,下載完安裝程序后執行安裝程序就行。這種安裝方式有點傻瓜式的,是很多初學者最開始接觸的安裝方式,博主也是第一次學習數據庫的時候安裝過一次,后面發現有免安裝的方式后,就基本不再使用此種安裝方式了,因為這種方式一旦沒有安裝成功或者要卸載的話還要刪注冊表之類的比較麻煩,所以個人不是特別喜歡這種方式,這里就不再演示,看官可以百度下其他網友的分享教程自行嘗試——

   

 

            

 1.2  免安裝版(zip)

  1.2.1  安裝說明

  這就是比較綠色的版本了,下載流程如上圖,與 msi 版類似,無需多言。雖然看起來很簡單,但布衣博主在一番折騰后還是發現,由於版本迭代(MySQL在 5.7.x 后就直接跳躍式的以大版本 8.x.x 的方式發布),MySQL 的不同版本解壓安裝是很不一樣的,所以博主特意下載了三個不同的大版本來比較:

             

  從三個版本 zip 包的解壓目錄結構可以看到很大的區別,其實只有 5.6.x 版本才稱得上是真正的綠色版,解壓后運行 bin 目錄下的 mysqld.exe ,你就可以從任務管理器中找到 mysql 的進程了,也能直接通過客戶端工具連接數據庫(默認  root 用戶,密碼為空),而 5.7.x 和 8.0.x 版本並不包含默認配置文件,也不能直接mysqld.exe 啟動使用。不過,沒有默認文件也無所謂,因為 mysql 服務本就是按照默認參數來運行的,無法直接運行的真正原因是缺少數據目錄 data (如果要自定義默認值文件名也是可以更改的),這是 mysql 的數據目錄,沒有數據目錄 mysql 服務就無法啟動,執行mysqld.exe 命令窗只是一閃而過,服務進程也完全起不來。這里不是說你新建一個 data 目錄就可以,目錄不用你自己建,只需要以管理員權限運行cmd 在 bin 目錄下執行 初始化數據目錄的 命令 mysqld --initialize (會隨機生成密碼,命令后跟 --console 就可以看到生成的密碼信息)或 mysqld --initialize-insecure( 免密) 即可自動生成數據目錄。數據目錄初始化后再執行 mysqld.exe 即可啟動 mysql服務了。尤其說明, mysqld --initialize 生成的隨機密碼是被標記為已過期的過期密碼,客戶端工具是無法用過期命令登錄的,只能用命令行先登錄進行密碼修改后才能進行額外操作,修改密碼命令為:alter user 'root'@'localhost' identified by  '新密碼'; 下圖為部分操作示例:

                 

      1.2.2  釋疑解惑

    再來說說布衣博主的不爽吧。針對網上大多數的教程中一上來就不講緣由的說要安裝服務,而且還強調用管理員身份,還要配置什么 my.ini文件等等,人雲亦雲,千篇一律,但就是不講那樣做的緣由,博主真心覺得方——這寫博客都不動腦子不用走心的嗎?而按照本文上面的演示,明明就是開箱即用的操作啊,干嘛還要要多此一舉呢? 為此,博主要在這里根據官網來解釋一下很多教程中無理由的操作。

  ①  為什么要安裝為 Windows 服務且要求管理員身份 ?

   官方解釋中有這樣的話:在Windows上,運行MySQL的推薦方法是將其添加為Windows服務,以便在Windows系統啟動和停止時自動啟動和停止。。。通常,要將MySQL添加到Windows服務,您應該使用具有管理員權限的帳戶登錄。為避免沖突,建議從命令行執行添加或刪除服務操前先關閉已經在運行的MySQL"服務"程序。簡單來說就是為了方便服務開機自啟,你可以通過 mysqld -install 將mysql 安裝為系統服務。

  ② 配置文件 my.ini或者my.cnf 是必須要有的嗎?

  官方文檔是這樣表述的從MySQL 5.7.18開始,my-default.ini不再包含在分發包中或由分發包安裝...如果沒有配置文件,服務器只會以其默認設置啟動

2 Linux 系統

  Linux作為文件系統,Linux系統由於衍生版本比較多,不同版有各自適用的包管理工具(如 rpm,apt 等)和壓縮包格式,本文不做大而全的概括,只選取常用的紅帽系為例,介紹兩種最常用的安裝方式方式。

   2.1     預編譯文件安裝

  ① 環境說明:CenOS 6.5 + MySQL 8;

  ② 請確保安裝環境干凈,如果之前有安裝過MySQL或MariaDB,檢查是否相應的配置文件存在,如/etc/my.cnf文件或/etc/mysql目錄,刪除之;

   預編譯過的二進制文件其實就是對應了Windows上的壓縮文件,去下載頁面選擇 Linux Generic 這個預編譯的二進制通用版本下載,結合官網的安裝文檔並經博主反復實踐,遂有以下流程說明:

# 查看自己系統的預編譯環境是否匹配要下載的二進制編譯文件版本
rpm -qa glibc

# 解壓二進制文件到/usr/local目錄(官方推薦的目錄),如果因為系統差異不能解壓xz格式文件,請嘗試其它方式 如 xz -d xx.tar.xz
tar -xvf mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz
# 解壓后包名很長,有些教程說改名,這里推薦軟鏈接的方式,這樣保留了帶版本號目錄名便於查看和升級 ln -s mysql-8.0.15-linux-glibc2.12-x86_64 mysql # 為了服務器的安全性,最好為 mysql 服務新建單獨的用戶和組,並設置用戶禁止登陸 groupadd mysql useradd -r -g mysql -s /bin/false mysql
# 創建mysql-files目錄,按照官方說法,是為了作為 secure_file_priv系統變量的值,使得導入和導出操作限制為特定目錄
mkdir mysql-files
# 將mysql-files目錄的用戶權限更改為mysql用戶 mysql組
chown mysql.mysql mysql-files # 執行初始化操作,正常情況下你會打印中找到隨機生成的一個臨時口令用來首次登錄 bin/mysqld --initialize --user=mysql
---------------執行完上訴動作就算安裝好了,以下為可選當也很有必要的操作---------------------------------
# 把啟動腳本放到開機啟動目錄
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

# 添加環境變量,這需要修改 /etc/profile(全局)或用戶目錄下的 .bash_profile 文件
echo 'export PATH=$PATH:/usr/local/mysql/bin'>>/etc/profile
source /etc/profile

   2.1.1    釋疑解惑

  ① 安裝包下載的時候旁邊會有一個MD5下載簽名,有什么用?

    這主要是用來做文件校驗的,通常網絡傳輸都有丟包或者包來源不明存在被惡意篡改的情況,拿到二進制包后可以執行 md5sum+包名(其它算法如 sha1 校驗類似)命令對 包內容的完整性做校驗

  ② 為什么沒看到你用配置文件?

    本着約定大於配置的原則,沒有特意強調個性化配置,如果想要顯示的指定配置文件,按照官網文檔,MySQL服務器會在啟動時會默認去尋找  /etc/my.cnf 或 /etc/mysql/my.cnf 文件(參見文末常用配置信息),請在此文件位置創建你的配置信息,也可在啟動時通過命令參數指定要加載的配置文件。

    

  2.2  Yum倉庫安裝

  環境說明:CentOS 7 + MySQL 8;

  這種安裝方式應該是最簡單的,缺點就是不能自定義安裝的目錄,而且要求服務器必須能能訪問公網或者說內網有搭建專門的yum倉庫。本博只以公網為例講述,先去下載頁根據自己系統位數和內核版本選擇yum存儲庫,復制存儲庫鏈接地址,開始yum安裝——

# 在線下載 mysql 的 yum 存儲庫文件到本地
wget
https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

# 查看 rpm 文件中的庫信息(可選操作)
rpm -qpl mysql80-community-release-el7-2.noarch.rpm 

# 安裝 yum 存儲庫的 rpm 包
rpm -ivh mysql80-community-release-el7-2.noarch.rpm 

# yum 安裝
yum -y install mysql-community-server

# 首次啟動數據庫,會初始化服務
systemctl start mysqld

# 設置開機自啟動
systemctl enable mysqld

# 查看隨機生成的密碼用來登錄
cat /var/log/mysqld.log
 
        

 

3    繞坑指南(持續更新)

  探究的過程中遇到各種各樣的問題,有的解決了,持續更新到下文,有些尚有疑惑待探究;也誠摯歡迎博友留言提出問題或提供更好的解決方案,互助共享,技術之源!

  ①  臨時密碼登錄並重置密碼后命令行的方式可以登錄並進行相應操作,但是客戶端工具還是無法連接,為什么?

  這主要是針對 8.0.x 的版本。因為最新版本將密碼的認證插件由之前的 mysql_native_password 改成了 caching-sha2-password,而很多連接工具對新版的兼容往往是滯后的,所以就出現了命令行能登錄數據庫但是客戶端工具卻無法登錄的情況。這種情況 網上有不同的解決方案,比如升級客戶端插件,但最簡單通行的做法是使用命令 alter user  ‘root’@’localhost’ identified with mysql_native_password by ‘新密碼’;  將用戶密碼的認證插件降級為低版本的 mysql_native_password 模式即可——

             

  ② yum安裝中 wget yum存儲庫可能會報證書名不符或權限不足,無法下載,按照提示去掉證書校驗並用超級管理員或臨時授予超管權限即可下載(如下圖)

 

 附:配置文件(my.ini或my.cnf)信息:

[mysql] 命令行登錄默認設置
# 設置客戶端默認字符集 
default-character-set
=utf8
# 客戶端套接字 socket=
/tmp/mysql.sock

#客戶端工具連接的默認設置
[client] 客戶端登錄默認設置 port=3306

[mysqld] 數據庫服務默認設置 # 設置服務端口 port = 3306
# 服務端套接字
socket=/tmp/mysql.sock
# 安裝基礎目錄,根據具體位置填寫 basedir= /usr/local/mysql # 數據庫數據目錄,根據具體位置填寫 datadir= /usr/local/mysql/data # 允許最大連接數 max_connections=20 # 服務器默認字符集 character-set-server=utf8 # 創建新表時將使用的默認存儲引擎 default-storage-engine=INNODB #綁定監聽地址 不寫或0.0.0.0(接收所有的IPv4請求)或 * (默認值,接收所有IPv4 或 IPv6請求)都表示允許遠程訪問,如果想禁止遠程訪問,可設置為本機回送地址127.0.0.1 bind-address = 0.0.0.0 #允許連接失敗次數,防攻擊使用,默認 100 max_connect_errors=10 #跳過權限表加載,忘記密碼且安全性要求不高的情況下使用,如果要求安全的修改密碼,請采用另外的方式,參見:https://www.cnblogs.com/ivictor/p/9243259.html #skip-grant-tables

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM