從零開始學MYSQL - MYSQL安裝

2022-01-14 懶時小窩

前言

這個專欄也可以認為是學習筆記,由於之前的專欄學習的是網絡上的培訓機構教程,學習完成之後發現雖然講到一些有一些深入的東西,但是講的都不是特別深,所以從這一節開始將會從零開始來全盤了解MYSQL,這裡找了一本書《從根上理解Mysql》,個人也十分推薦讀者去看看這邊書,不僅有新特性對接講解,也有很多的乾貨,同時講的也十分好,作為支持個人後面也買了一本實體書(雖然基本都是拿pdf看的)。

思維導圖(持續更新)

https://www.mubucm.com/doc/7DDOY0CuMK5

圖片地址:https://gitee.com/lazyTimes/imageReposity/raw/master/img/20211029134243.png

參考資料:英文mysql5.7官方文檔:https://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html中文對應翻譯網站(機翻):https://www.docs4dev.com/docs/zh/mysql/5.7/reference/preface.html概述了解安裝mysql的注意事項,以及回顧mysql個人簡要介紹關於mysql啟動的常見四個命令以及具體的作用認識客戶端和服務端

由於是Mysql的專欄,這裡就不牽扯上面TCP/IP,什麼網絡傳輸協議了,總之我們只需要了解mysql是分為客戶端和服務端的,通常我們訪問頁面或者瀏覽數據就是一次資料庫的訪問過程(當然現在多數東西都靜態化了),所以連接的這一方被稱為客戶端而接受請求的這一方面被稱為服務端

mysql的基本任務

通常我們使用MYSQL基本都是幹這些事情:

查詢資料庫的數據,客戶端發送請求給服務端,服務端根據命令找到數據回送給客戶端。mysql實例

說完了上面的廢話之後,我們來說下mysql實例,實例也在作業系統的層面叫做進程,而進程可以看做是處理器,內存,IO設備的抽象,我們不需要知道這個進程底層是如何傳輸數據存儲數據的,我們只需要了解他需要一個「埠」,並且每一個實例都有一個 「進程ID」的東西,在資料庫實例運行的時候系統會分配一個進程ID給它並且保證唯一,而每一個進程都有自己的名字,這個名稱是安裝的時候由程式設計師自己設置的,但是如果沒有分配則會使用MYSQL自己默認設置的名稱。

我們啟動的 MySQL 「伺服器進程的默認名稱」「mysqld」 , 而我們「常用的 MySQL 客戶端進程」的默認名稱為 「mysql」

從這個名稱我們也可以推測出為什麼我們啟動一個服務通常會使用Mysqld,而我們連接資料庫通常使用mysql。

安裝Mysql的注意事項

安裝Mysql其實是一件十分簡單但是實際上如果全手動安裝細節還是比較多的,通常情況下我們自己使用直接用EXE程序或者直接使用BIN包等,但很多時候對於Linux的軟體很多人都會推薦使用 「源碼安裝」,源碼安裝的好處不僅僅是縮小體積,經過不少的實驗證明源碼的安裝方式效率會有所提升,所以正式環境下 「儘可能使用源碼安裝」,最後需要注意的一點是:「Linux下使用RPM包會有單獨的伺服器和客戶端RPM包,需要分別安裝」

安裝目錄位置的區別

下面是具體的Mysql安裝目錄,當然下面這裡只做參考,個人mac電腦使用的是brew install mysql加上m1的的晶片安裝的,適配性未知,所以為了保證筆記的可靠,這裡用回了windows系統來進行實際測試和演練,下面是不同的作業系統在mysql的安裝目錄存儲位置存在細微的不同,「但是一定要十分清楚mysql真實的安裝位置」,這對於自己搗鼓各種命令以及設置參數很重要。

macOS 作業系統上的安裝目錄:
/usr/local/mysql/
Windows 作業系統上的安裝目錄:
C:\Program Files\MySQL\MySQL Server 5.7

Mysql安裝windows安裝過程

安裝過程就不演示了,網上的教程一抓一大把,為了穩妥起見這裡個人使用的mysql版本是5.7的版本,同時使用了默認exe程序安裝,如果你使用了「mysql-installxx.exe」安裝,有的時候會出現下面的命令:

'mysql' 不是內部或外部命令,也不是可運行的程序

看到這個提示之後,第一反應是進入power shell的管理員模式:

PS C:\Windows\system32> mysql -uroot -p
mysql : 無法將「mysql」項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正
確,然後再試一次。
所在位置 行:1 字符: 1
+ mysql -uroot -p
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (mysql:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

發現還是報錯,然後我跑去服務看了下mysql是否有啟動,發現mysql又是啟動的,這裡有點奇怪

然後這裡找了下網絡上的解決辦法,其實加個環境變量就行了,然後使用power shell直接安裝即可,最後我們照常輸入命令就可以發現mysql正常安裝完畢了:

PS C:\Windows\system32> mysql -uroot -pxxxxxx
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.35-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, 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.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


關於絕對路徑和相對路逕啟動問題:

絕對路徑:如果你的系統環境變量裡面訪問不到你的應用程式命令,這時候就需要進入到相關的目錄執行命令,比如上面我沒有配置環境變量就需要進入到C:\Program Files\MySQL\MySQL Server 5.7\bin目錄下進行操作,也可以正常使用mysql,但是每次這樣弄很麻煩,所以基本是個正常人都會使用環境變量,如果你不知道環境變量是什麼,額。。。。請自行百度

相對路徑:配置完環境變量之後,我們敲命令會根據系統環境變量配置的 「先後順序」找到我們的命令並且執行,但是這點在mysql有點特別,後續會講到如果多個系統參數配置會默認使用 「最後讀到的配置參數為準」


macos安裝過程

Mac本子個人也是24分期才敢碰的神物,我相信用的人也不多,所以這裡直接放個帖子:

https://www.cnblogs.com/nickchen121/p/11145123.html

Linux安裝過程

由於個人使用雲伺服器搭建mysql比較多,這裡提供了一個阿里雲rpm包的安裝方式,版本是centeros7,centeros6同樣可以使用,不過需要修改部分命令。

https://juejin.cn/post/6895255541544255496

Mysql啟動:

多數情況我們使用mysql.sever啟動即可,因為它會間接的調用其他的幾個命令,而mysqld_muti這個命令更建議自己實戰的時候進行配置的學習使用,更加事半功倍。

mysqld

Mysqld:代表的是mysql的伺服器程序,運行就可以啟動一個伺服器的進程,但是「不常用」

個人在實踐之後使用了mysqld命令之後,發現運行的結果如下,起初比較莫名其妙的問題,但是看日誌不難發現問題,其實就是 「目錄不存在」並且mysql又沒法給你創建目錄,只要使用「everything」找到對應點文件即可(mac為什麼沒有這麼好用的軟體,哎)。

你可以通過找到下面的my.ini文件並且修改裡面關於「datadir」的路徑即可。

通過打開這個文件發現配置路徑裡面有一個/Data,然後發現目錄裡面沒有這路徑:

# Path to the database root
datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data

下面是上面描述的日誌的運行結果,感興趣的可以自己試一試,也可能遇不到我這種問題

PS C:\Windows\system32> mysqld -datadir=D:\soft\mysqltest
mysqld: Can't change dir to 'C:\Program Files\MySQL\MySQL Server 5.7\data\' (Errcode: 2 - No such file or directory)
2021-10-28T14:20:14.063607Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-10-28T14:20:14.063669Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2021-10-28T14:20:14.064027Z 0 [Note] C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe (mysqld 5.7.35) starting as process 3296 ...
2021-10-28T14:20:14.066088Z 0 [Warning] Can't create test file C:\Program Files\MySQL\MySQL Server 5.7\data\DESKTOP-L8AD9HM.lower-test
2021-10-28T14:20:14.066416Z 0 [Warning] Can't create test file C:\Program Files\MySQL\MySQL Server 5.7\data\DESKTOP-L8AD9HM.lower-test
2021-10-28T14:20:14.067090Z 0 [ERROR] failed to set datadir to C:\Program Files\MySQL\MySQL Server 5.7\data\
2021-10-28T14:20:14.067408Z 0 [ERROR] Aborting

2021-10-28T14:20:14.067619Z 0 [Note] Binlog end
2021-10-28T14:20:14.067904Z 0 [Note] C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe: Shutdown complete

最後你可以運行mysqld啟動一個伺服器進程並且在對應的目錄下面構建了對應的文件。

答案的靈感來自於下面的部分:

What I did (Windows 10) for a new installation:

Start cmd in admin mode (run as administrator by hitting windows key, typing cmd, right clicking on it and selecting "Run as Administrator"

Change into "MySQL Server X.Y" directory (for me the full path is C:\Program Files\MySQL\MySQL Server 5.7")

using notepad create a my.ini with a mysqld section that points at your data directory

[mysqld]
datadir="X:\Your Directory Path and Name"

created the directory identified in my.ini above.

change into bin Directory under server directory and execute: mysqld --initialize

Once complete, started the service and it came up fine.

❞mysqld_safe

「mysqld_safe」 是一個啟動腳本,在間接的調用「mysqld」 ,同時「監控進程」,使用 mysqld_safe 啟動伺服器程序時,會通過監控把出錯的內容和出錯的信息重定向到一某個文件裡面產生出錯日誌,這樣可以方便我們找出發生錯誤的原因。

但是個人實踐之後找不到,其實原因是「windows沒有這個命令」的,關於更多mysqld_safe命令的解釋可以看看mysql的官方網站:https://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html

如果閱讀英文有困難,這裡有一個中文的翻譯網站:https://www.docs4dev.com/docs/zh/mysql/5.7/reference/preface.html

❞❝

對於一些Linux 平臺,使用 RPM 或 Debian 軟體包安裝的 MySQL 包括對 ManagementMySQL 伺服器啟動和關閉的系統支持。在這些平臺上可能被認為沒有必要所有沒有安裝mysql.server和mysqld_safe。

❞mysql.server

這個文件同樣也是一個啟動腳本,也是最常用的腳本,實際上這個命令可以看做是一個連結,也就是一個「快捷方式」,實際指向的路徑為:../support-files/mysql.server,另外這個「命令會間接的調用mysqld_safe」,我們使用下面的命令就可以直接啟動服務:

mysql.server start

如果作業系統在安裝之後沒有構建相應的連結文件,可能需要自己手動構建一個連結文件,另外,linux伺服器需要注意權限的問題,因為有時候沒有root權限可能需要對於對應的目錄配置用戶組,下馬是關於官網的介紹

如果從源分發版或使用不自動安裝「mysql.server」的二進位分發版格式安裝 MySQL,則 可以手動安裝腳本。它可以 support-files在 MySQL 安裝目錄下的目錄或 MySQL 原始碼樹中找到。將腳本複製到/etc/init.d名為「mysql」的目錄並使其可執行:

shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql

最後啟動和關閉mysql可以使用如下的方式(linux系統):

mysql.server start
mysql.server stop

如果是windows系統,使用上面的命令會報錯,所以我們使用下面的命令即可:

PS C:\Windows\system32> mysql.server start
mysql.server : 無法將「mysql.server」項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑
,請確保路徑正確,然後再試一次。
所在位置 行:1 字符: 1
+ mysql.server start
+ ~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (mysql.server:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS C:\Windows\system32> net start mysql
服務名無效。

請鍵入 NET HELPMSG 2185 以獲得更多的幫助。

PS C:\Windows\system32> net start mysql57
請求的服務已經啟動。

mysqld_multi

有的時候我們可能會想要在一臺的機器上使用多個伺服器的進程,這個命令的作用是對於每一個伺服器進程進行啟動或者停止監控,但是由於這個命令較為複雜,個人還是建議使用上面的官方穩定連結進行具體的細節了解。

如果閱讀英文有困難,這裡有一個中文的翻譯網站:https://www.docs4dev.com/docs/zh/mysql/5.7/reference/preface.html

❞window&服務啟動

這個簡單了解一下即可,window端的mysql基本是為了照顧windows的用戶才出現的,真正能施展拳腳的地方還是linux,當然有些公司確實會使用window作為伺服器。。。。。所以還是過一下,下面是安裝一個windows的服務的命令:

"完整的可執行文件路徑" --install [-manual] [服務名]

其中的 -manual 可以省略,區別在於加上會關閉 「自動啟動」改為「手動啟動」

最後下面是個人的mysqld服務安裝命令,請讀者根據自己的系統環境自行安裝即可。

C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld --install

安裝之後使用net start mysql和net stop mysql命令即可啟動或者關閉。

Mysql連接

這裡只有一個需要注意一下的點那就是對於命令格式來說,如果使用-u、-p等參數的時候使用一個短劃線,但是如果使用--username、--password等要使用雙劃線的形式。

總結

本節內容非常簡單,介紹了關於mysql的安裝過程的踩坑和四個常見的啟動命令,其實我們重點只需要掌握一個命令即可,同時對於部分命令更加建議自己使用的時候邊學邊記錄可以更好的消化和吸收。

以上就是筆者邊學習邊踩坑的記錄,最後發現最好的教程還是官方文檔,另外遇到問題也不要慌,先在自己腦海中大膽的猜測問題點,進行驗證之後反覆重試,踩坑多了之後自然會熟悉。

寫在最後

算是對於專欄的重新編寫,後續會對之前的學習內容做一個復盤和總結。

相關焦點

  • mysql安裝圖解 mysql圖文安裝教程
    MySQL5.0版本的安裝圖解教程是給新手學習的,當前mysql5.0.96是最新的穩定版本。去官網下載下面的是MySQL安裝的圖解,用的可執行文件安裝的,詳細說明了一下!打開下載的mysql安裝文件mysql-5.0.27-win32.zip,雙擊解壓縮,運行「setup.exe」,出現如下界面mysql安裝嚮導啟動,按「Next」繼續選擇安裝類型,有「Typical(默認)」、「Complete(完全)」、「Custom(用戶自定義)」三個選項,我們選擇「Custom」,有更多的選項,也方便熟悉安裝過程:在「Developer
  • 從零開始學 MySQL -- 創建資料庫並插入數據
    閱讀本文大概需要 8.88 分鐘上篇文章介紹了學習 MySQL 的重要性,那麼從今天開始
  • 在Linux伺服器上安裝MySQL
    (文字不能做外部的超連結,噁心心)https://learnsql.com/blog/sql-or-sequel/開始啦!最直接的方式--包管理器(yum,apt,etc.)最簡單直接的安裝方式是使用包管理器安裝,比如CentOS上的yum,Ubuntu上的apt等等。
  • 在 Ubuntu 上安裝 MySQL
    MySQL 是一個開源的資料庫管理系統,通常作為最受歡迎的 LAMP(Linux,Apache,MySQL,PHP/Python/Perl)
  • MySQL安裝與配置教程
    ,選擇一個穩定版本吧(點擊Archives)3>選擇安裝版本、運行系統、作業系統版本,點擊 ZIP Archive 後面的 Download 開始下載-5.7.35-winx64datadir=D:\mysql-5.7.35-winx64\datamax_connections=200max_connect_errors=10character-set-server=utf8mb4default-storage-engine=INNODBdefault_authentication_plugin=mysql_native_password[mysql
  • 安裝Mysql報錯:RSA private key file not found
    安裝mysql報錯[Note] RSA private key
  • 雲伺服器如何安裝mysql
    =1 \ #安裝myisam存儲引擎-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安裝innodb存儲引擎-DWITH_MEMORY_STORAGE_ENGINE=1 \ #安裝memory存儲引擎-DWITH_READLINE=1 \ #支持readline庫-DENABLED_LOCAL_INFILE=1 \ #啟用加載本地數據-DMYSQL_USER=mysql \
  • MySQL 5.7-安裝教程
    3.雙擊安裝包安裝18.把剛剛安裝的mysql 的bin路徑給複製進去(安裝的mysql 默認路徑為C:\ProgramFiles\MySQL\MySQL Server 5.7\bin) 點擊確定然後輸入命令:netstart mysql57 , (mysql57 是我的資料庫名字,剛剛有改動的,請換成自己的資料庫名字),關閉mysql的命令是:netstop mysql57
  • MySQL的安裝與配置——詳細教程
    在本博文裡,我主要以Mysql免安裝版為例,幫助大家解決安裝與配置mysql的步驟。   首先:要先進入mysql官網裡(Mysql的官網-->https://www.mysql.com/),下面是詳細步驟:↓  (為了方便大家的操作,我的網盤裡有安裝包:    連結:https://pan.baidu.com/s/1hq0rrtdXm2g7FqwaBKxgWg    提取碼:wsh6  )
  • ubuntu20.04安裝mysql5.7
    下載安裝包打開連結 https://downloads.mysql.com/archives/community/ 選擇相應版本進行下載,這裡mysql版本選擇 5.7.35,系統選擇Ubuntu Linux,選擇64位的進行下載image-202110271441038402.
  • Ubuntu16.04使用docker安裝MySQL(詳細)
    在安裝MySQL時,自己按照別人的教程不管是安裝mysql5.5還是mysql5.7
  • Centos7 安裝MySQL 5.7
    在CentOS中默認安裝有MariaDB,這個是MySQL的分支,但為了需要,還是要在系統中安裝MySQL,而且安裝完成之後可以直接覆蓋掉MariaDB。1 下載並安裝MySQL官方的 Yum Repositorywget -i -c http://dev.mysql.com/get/
  • 樹莓派搭建安裝MySQL
    真的是非常小,只有巴掌大,給樹莓派買了一些配件,外殼、小風扇、2片散熱片、32G SD卡、HDMI線,組裝之後的效果。安裝之前可以先更新下本機軟體sudo apt-get update然後就是等待了。等待完之後要準備安裝mysql了,命令直接安裝:sudo apt-get install mysql-server然後就是等待,在安裝的過程中會提示你讓你輸入mysql的root密碼,會提示兩次。輸入完成之後就會安裝成功了。
  • Linux系統下安裝MySQL的步驟詳解
    如下是我工作中的記錄,介紹的是linux系統下使用官方編譯好的二進位文件進行安裝MySql的安裝過程和安裝截屏,這種安裝方式速度快,安裝步驟簡單! 需要的朋友可以按照如下步驟進行安裝,可以快速安裝MySql,希望可以幫助大家:)! 1、下載mysql的linux版本的二進位安裝包: 地址:http://dev.mysql.com/download...
  • 搞定MySQL安裝難安裝貴問題
    背景本方案解決了windows下安裝MySQL過程繁瑣的問題。是真正的免安裝綠色方法,不用配環境變量,不用執行install命令,不用配置my.ini文件。>命令成功生成data目錄,同時生成無密碼的root用戶啟動MySQLbin下執行mysqld--console設置root密碼執行mysql-uroot-p連入資料庫,密碼不用輸入,直接按回車進入mysql>
  • MySQL壓縮版的安裝詳細步驟
    mysql封面為什麼要寫這篇文章一直以來,我每次安裝MySQL總是不會成功,安裝完無法登入SQL,不知道怎麼去免密登錄,每次又一通問度娘,然後就是搞了很久,才能搞定MySQL的安裝。所以自己就決定潛心研究下MySQL的安裝。並附上詳細的步驟和說明,也希望能夠為和我一樣的人解決這些煩惱。
  • day06-python資料庫-mysql之安裝
    資料庫分兩大類:mysql下載安裝Linux版本二進位rpm包安裝yum -y install mysql-server mysql源碼包安裝mysql-r -g mysql mysql 9 chown -R mysql:mysql mysql-5.6.2110 11 3.安裝資料庫12 su mysql13 cd mysql-5.6.21/scripts14 .
  • Linux中如何安裝MySQL,步驟如下
    1、將mysql安裝包從物理機拖到linux裡創建的task文件中,對mysql進行解壓,查看解壓後的效果2、進入到root下,檢查當前伺服器是否已經安裝有mysql,先卸載mysql(為了不與要安裝的版本發生衝突,就要先卸載之前的版本)
  • 怎樣在 Ubuntu Linux 上安裝 MySQL | Linux 中國
    方法 1、從 Ubuntu 倉庫安裝 MySQL首先,輸入下列命令確保你的倉庫已經被更新:現在,安裝 MySQL 5.7,簡單輸入下列命令:sudo apt install mysql-server -y就是這樣!簡單且高效。
  • Ubuntu 安裝 Mysql(附Frp 內網穿透)
    二、安裝Mysqlhttps://dev.mysql.com/downloads/repo/apt/點擊Download2、安裝Mysql APT 配置包dpkg -i mysql-apt-config_0.8.17-1_all.deb