MySQL環境搭建
- 1.MySQL的安裝
- 2.配置環境變數
- 3.啟動MySQL服務,登錄資料庫
- 4.在Windows上同時安裝2個不同版本的MySQL
- 5.創建遠程連接賬號和登錄遠程MySQL資料庫,
1.MySQL的安裝
MySQL安裝網上有一堆教程,
1.1.比較簡便方法是:
-
Windows系統,在官網的MySQL Installer下載msi安裝版,下載后雙擊安裝包直接安裝便可,參考教程:超詳細MySQL安裝及基本使用教程

-
Linux系統,以Ubuntu為例,打開終端依次運行下面兩條命令,分別安裝好MySQL服務和MySQL客戶端即可,
sudo apt-get install mysql-service
sudo apt-get install mysql-client
- macOS沒有試過,暫不討論,
1.2. 比較麻煩的安裝方法
- Windows系統,基本思路是:
①在官網 MySQL Community Server下載壓縮包,【推薦下載第一個,第二安裝貌似非常麻煩】

②下載后解壓檔案, 解壓后如果檔案夾里沒有 my.ini檔案,則需要手動創建一個,通過新建文本檔案,然后再修改檔案名就可以,
打開創建好的my.ini檔案,輸入以下內容,保存就可以,
特別注意: MySQL8.0版本,可以先不用my.ini組態檔安裝,不行再添加組態檔進行安裝,
檔案中的 basedir=后面需要填寫你解壓檔案的路徑,secure_file_priv=后面填寫的則是MySQL安全路徑,因為MySQL安全策略的原因,需要指定一個給MySQL用來匯入匯出資料的檔案夾,注意: 這里路徑用了2個反斜杠,是因為Windows系統反斜杠是轉義字符,避免因此造成奇奇怪怪的問題,
[mysql]
# 設定mysql客戶端默認字符集
default-character-set=utf8mb4
[mysqld]
#設定3306埠
port = 3306
# 設定mysql的安裝目錄
basedir=E:\\Program Files\\Mysql\\mysql-5.7.27-winx64
# 允許最大連接數
max_connections=200
# 允許連接失敗的次數,這是為了防止有人從該主機試圖攻擊資料庫系統
max_connect_errors=10
# 服務端使用的字符集默認為8位元編碼的latin1字符集
character-set-server=utf8mb4
# 創建新表時將使用的默認存盤引擎
default-storage-engine=INNODB
# 安全路徑
secure_file_priv='E:\\Program Files\\Mysql'
③用管理員權限打開電腦cmd終端,再依次輸入以下命令來切換到MySQL解壓目錄,E:\Program Files\Mysql\mysql-5.7.27-winx64這部分改為你解壓檔案的目錄里面的bin目錄,第二行的E:則是檔案夾所在的盤(放在E盤就填E:,D盤就填D:,以此類推),
cd E:\Program Files\Mysql\mysql-5.7.27-winx64\bin
E:
輸入以下代碼,注冊MySQL服務:
其中的MySQL8.0是服務的名稱,可以自定義,不填的話默認注冊的服務名稱為mysql,對于同一臺電腦安裝2個版本的mysql這種情況,就必須設定不同服務的名稱,以便于區分,
mysql --install MySQL8.0
若出現Service successfully installed,證明安裝成功;
如出現Install of the Service Denied,則說明沒有以管理員權限來運行cmd,如何操作請參考百度經驗,

服務安裝成功后,再對data目錄初始化:
注意:如果解壓后的檔案夾里面有 data這個檔案夾,需要先洗掉,或者拷貝到其他目錄做備份,不然可能會導致初始化失敗!
后面--user=mysql --console這部分如果不加入的話,會生成一個沒有密碼的root用戶,如果登錄失敗,則需要打開前面的my.ini組態檔,在[mysqld]這一行下面,再添加一行 skip-grant-tables,再關閉和打開服務,重新登錄,
mysqld --initialize --user=mysql --console
通常初始化data成功后cmd會出來一部分提示,注意這里面有你的MySQL root用戶的臨時密碼,之后要用,你可以先保存下來,比如安裝后出現下面提示中的 k9CRxtbKgt?j 就是root用戶的臨時密碼,
A temporary password is generated for root@localhost: k9CRxtbKgt?j
- Linux和macOS沒有嘗試過這種壓縮包安裝法,暫且略過,
2.配置環境變數
-
Windows上配置環境變數
打開控制面板,打開方法參考Windows電腦打開控制面板,
打開控制面板后依次進入
系統和安全—>系統—>高級系統設定—>環境變數—>系統變數
(搬運自此鏈接)



點擊新建,變數名為:MYSQL_HOME,變數值為:你的mysql-5.7.27-winx64檔案夾所在位置,
例如本次解壓在E:\Program Files\Mysql\mysql-5.7.27-winx64,如圖:

編輯Path,復制;%MYSQL_HOME%\bin到原有值的后面,如圖:

-
Linux系統上如果按照1.1方法安裝,則一般不需要考慮環境變數(也可能是我對Linux了解不夠),macOS沒試過,暫時略過,
3.啟動MySQL服務,登錄資料庫
3.1 啟動和關閉MySQL服務
- Windows上啟動和關閉MySQL服務
用管理員權限打開電腦cmd終端,輸入以下命令
其中mysql8.0這部分是前面注冊MySQL服務時候用的名稱,默認是mysql,如果你是用mysql --install命令安裝,或者msi檔案安裝的話,則輸入net start mysql以啟動MySQL服務,用net stop mysql關閉MySQL服務,
# 啟動mysql服務
net start mysql8.0
# 關閉mysql服務
net stop mysql8.0
Windows上如何查看MySQL服務狀態請參考https://blog.csdn.net/sinat_32034679/article/details/69223234

- Linux上啟動和關閉MySQL服務
# 啟動MySQL服務
sudo service mysql start
# 查看MySQL服務運行狀態
sudo service mysql status
# 停止MySQL服務
sudo service mysql stop

如果MySQL服務啟動失敗,報錯如下

把下面的三行命令,逐行運行即可,
usermod -d /var/lib/mysql/ mysql
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
chown -R mysql:mysql /var/lib/mysql
運行后關閉MySQL服務,再重新啟動MySQL服務,
3.2 登錄資料庫和修改用戶密碼
- 登錄資料庫,Windows和Linux命令是一樣的,macOS沒有測驗過,
按照前面用管理員權限打開電腦cmd終端,先啟動MySQL服務,再輸入以下命令,按回車后輸入密碼,輸入密碼的時候,Linux系統上是不會顯示你的輸入的,輸入密碼后再回車,如果前面沒有設定密碼就直接按回車,
mysql -u root -h localhost -p
也可以像下面把密碼放到后面一起輸入,但是這種方法不推薦使用,一般適用于雜亂的初始密碼登錄的時候使用,
mysql -u root -h localhost -p k9CRxtbKgt?j
如果是Windows系統用msi檔案安裝的,使用你設定的密碼進行登錄,
如果沒有配置系統變數的話,就需要在MySQL解壓目錄的bin目錄下,執行命令登錄MySQL資料庫,

- 修改用戶密碼
例如把root用戶的密碼修改成123456,在MySQL終端輸入以下命令
ALTER USER 'root'@'localhost'IDENTIFIED BY '123456';
再輸入這行命令更新就可以了,可以退出再嘗試登錄,
flush privileges;

4.在Windows上同時安裝2個不同版本的MySQL
參考資料:windows環境下:安裝MySQL8.0;同時安裝MySQL5.7
簡要來說,就是一個版本按照上面正常安裝、啟動和登錄;另外一個版本只能用壓縮包解壓安裝且不要配置環境變數,啟動服務跟上面一樣,登錄的時候需要先切換到解壓目錄的bin目錄下,再執行myslq -uroot -p等命令進行登錄或者連接遠程服務器,
如果你需要在Windows里面安裝2個不同版本的MySQL(比如5.7和8.0):
①請先按照前面的方法你最常用的那個版本的MySQL(可以用MSI安裝包安裝,也可以用壓縮包安裝),
②接著,再用壓縮包安裝方法(即1.2里的方法),安裝另外一個版本的MySQL, 此時要注意安裝的服務名稱不要和前面的一樣即可,安裝后也不要配置環境變數,
比如第一個版本用默認方式mysql --install安裝后,服務名稱為 mysql,用msi檔案安裝的也是這個名稱,啟動服務的時候用net start mysql,關閉服務用net stop mysql
第二個版本安裝的時候用mysql --install MySQL8.0,則服務名稱為 mysql8.0,啟動服務的時候用net start mysql8.0,關閉用net stop mysql8.0
③如何啟用和登錄這2個版本的MySQL,
- 先嘗試啟動第一個版本的服務,并登錄資料庫,
如果服務啟動失敗,可以把data檔案夾洗掉或者拷貝到其他地方,重新執行一次mysql --install和mysqld --initialize --user=mysql --console,具體報錯請復制報錯問題進行百度搜索,
如果是登錄資料庫報錯:“ ‘mysql’ 不是內部或外部命令,也不是可運行的程式或批處理檔案,” 則需要重新配置一下環境,

如果環境配置確認沒有問題,卻還是一樣的報錯的話,可以切換到安裝目錄的bin目錄里面,再執行登錄資料的命令,

- 再嘗試啟動服務第二個版本的MySQL服務,
(這里可以先把前面的資料庫退出登錄,并關閉mysql服務,因為我本身沒有測驗過2個資料庫同時在同一個電腦運行,所以不能保證2個資料庫可以同時運行,又經測驗發現,不能同時運行2個MySQL服務,)
第二個版本的MySQL服務正常啟動后,接著切換到第二個版本的MySQL解壓目錄的bin目錄下,再執行myslq -uroot -p等命令進行登錄或者連接遠程服務器,
5.創建遠程連接賬號和登錄遠程MySQL資料庫,
假設現在有2臺主機,主機A 和主機B,
其中主機A的ip為192.168.0.11 ; 主機B的ip為192.168.0.3 ,
(如何獲取電腦主機的ip:
Linux系統上在終端使用 ifconfig 命令查詢;
Windows系統上在終端使用 ipconfig 命令查詢)
現在要用從主機B登錄上 主機A上的資料庫,需要進行以下步驟:
①在主機A上創建可以用來遠程登錄的賬號 RemoteUser,賬號的登錄密碼為 password,并且為了安全,這個賬號只允許ip為 192.168.0.10 的主機進行連接,
- 需要先按前面的方法登錄進mysql資料庫,
- 進入資料庫后,再執行以下命令來創建
以下使用于MySQL5.7以及以下的版本進行用戶創建:
grant all privileges on *.* to 'RemoteUser'@'192.168.0.3' identified by 'password';
如果是MySQL8版本,則需要逐行執行以下的命令來創建用戶,
其中,MySQL8需要通過mysql_native_password 這個函式密碼來進行遠程連接,
# 創建賬戶
create user 'RemoteUser'@'192.168.0.3' WITH mysql_native_password identified by 'password'
# 賦予權限,with grant option這個選項表示該用戶可以將自己擁有的權限授權給別人
# *.* 代表 所有庫.所有表 ,可以根據實際情況設定
grant all privileges on *.* to 'RemoteUser'@'192.168.0.3' with grant option
# flush privileges 命令本質上的作用是將當前user和privilige表中的用戶資訊/權限設定從mysql庫(MySQL資料庫的內置庫)中提取到記憶體里,
flush privileges;

② 啟用3306埠
- 在資料庫里面執行以下命令,檢查資料庫系結的埠(默認是系結3306埠的)
show global variables like 'port';

- 查看本機的3306埠是否啟用,需要先啟動MySQL服務,才能查到MySQL有沒有使用這個埠,啟動方法看前面的介紹,
Linux系統使用以下命令,在終端里面查詢
netstat -an | grep 3306
root@localhost:~# netstat -an | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
注意:現在的3306埠系結的IP地址是本地的127.0.0.1,需要打開組態檔,在bind-address = 127.0.0.1這行前面加上#注釋掉這行,
? ? ? ? 1)? Linux系統的組態檔放在 “/etc/mysql/mysql.conf.d/mysqld.cnf” 也有的是放在 “/etc/mysql/my.cnf ” ,在檔案管理里面找到這個檔案后,打開編輯修改保存就可以,
也可以在終端命令列輸入以下命令,打開組態檔
vim /etc/mysql/mysql.conf.d/mysqld.cnf
打開檔案后,按鍵盤的 ESC 鍵,再按一下字母 O鍵進入編輯模式,然后找到這一行,在開頭輸入 # ,最后按鍵盤的 ESC鍵,輸入 :wq 再按回車,進行保存和退出就可以了,


之后,再關閉MySQL服務,重新啟動MySQL服務,再次查看埠資訊,
root@localhost:~# netstat -an | grep 3306
tcp6 0 0 :::3306 :::* LISTEN
? ? ? ? 2)? Windows系統在終端里面,使用以下命令查詢,
netstat -an | findstr 3306
Windows也是把前面的my.ini組態檔 里面的bind-address = 127.0.0.1這行前面加上#注釋掉這行再保存就可以,如果沒有這行就不用管,
如果安裝的時候沒有使用my.ini組態檔,可以在終端里面,先關閉MySQL服務,然后切換到MySQL的解壓目錄里面的bin目錄下,再運行以下命令:
mysqladmin --bind-address 0.0.0.0

執行命令后可以看到這里顯示了

- 啟用3306埠,并在防火墻里設定允許連接,
? ? ? ? 1)? 在Linux系統中啟用3306埠:
以Ubuntu為例
# 安裝ufw防火墻管理軟體
sudo apt install ufw
# 啟用防火墻
sudo ufw enable
# 設定默認的規則為allow,這樣除非指明打開的埠,否則所有埠默認都是關閉的
sudo ufw default deny
# 打開3306埠
sudo ufw allow 3306
# 查看防火墻狀態
sudo ufw status verbose
# 關閉防火墻
sudo ufw disable
root@localhost:~# sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
root@localhost:~# sudo ufw allow 3306
Rule added
Rule added (v6)
root@localhost:~# sudo ufw reload
Firewall reloaded
? ? ? ? 2)? 在Windows 中啟用3306埠:https://zhidao.baidu.com/question/543532397.html

開啟后,在防火墻里面添加3306允許連接,方法如下:
打開 控制面板\系統和安全\Windows 防火墻\允許程式或功能通過Windows防火墻 ,查看前面設定的埠名稱是不是有勾選,

我這里安裝了2個版本的MySQL,所以會有2個埠的記錄,
而且貌似2個不同版本的MySQL不能共用同一個埠?
毋庸置疑的是,不能同時運行2個MySQL服務,

在Linux里面啟用3306埠,并在防火墻中添加3306埠,
③再主機B使用主機A創建好的的賬號進行登錄
- 需要先按前面的方法啟動MySQL服務
- 再用以下的命令登錄遠程資料庫
mysql -u RemoteUser -h 192.168.0.11 -P 3306 -p password
這里是用Windows上的MySQL5.7服務,連接登錄Ubuntu上的MySQL5.7資料庫,引數和引數值之間可以不帶空格,

如果登錄失敗,出現以下錯誤,可以嘗試洗掉用戶,重新創建一次,再進行登錄,我就遇到這個bug,(這個應該密碼錯誤,可能是注冊用戶的時候操作失誤導致的,)

洗掉用戶的命令如下:
drop user RemoteUser@192.168.0.3;
flush privileges;

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234835.html
標籤:其他
