1. 程式人生 > >mysql8.0 在window環境下的部署與配置

mysql8.0 在window環境下的部署與配置

今天在阿里雲window伺服器上配置mysql環境,踩了一些坑,分享出來。需要的朋友可以看看。額,或許有人要吐槽我為什麼不在linux上去配置,額,因為我window的那臺伺服器配置相對高些。本人技術方面偏向於.net,現在接觸php專案所以搭建LAMP環境。只不過我的資料庫放在window上的這臺伺服器。言歸正傳

先選擇版本,到mysql官方網站下載https://www.mysql.com/downloads/,你會發現各宗版本看得眼花繚亂的,不要驚慌先選擇MySQL Community Edition版, 然後再跳轉的頁面下,你會發現還會有很多子版本要選,英文要不好的同學,選擇上會有點吃力,可選子版本有兩個:

(1)先說 一個是最省事的版本 ,直接下一步下一步安裝就好,有點像sqlserver  純介面展示。 https://dev.mysql.com/downloads/installer/  ,配置比較高的伺服器,或懶得去搞一堆命令列的朋友可以直接下載這個。看完這裡可以直接省略下面的內容了。

  (2) 第二個版本,MySQL Community Server版本。 https://dev.mysql.com/downloads/mysql/  這個版本比較適合伺服器安裝。佔用資源較小。部署也比較靈活。缺點如果不熟悉的話坑會比較多。   

 我們先快速的說下 安裝的步驟,先下載檔案,解壓縮到目標資料夾位置.比如 D:/mysql 。

1,在mysql資料夾 下新建一個檔名為my.ini , 然後錄入資訊如下

[mysql]
# 設定mysql客戶端預設字符集
default-character-set=utf8 
[mysqld]
#設定3306埠
port = 3306 
# 設定mysql的安裝目錄
basedir=D:/mysql
# 設定mysql資料庫的資料的存放目錄
datadir=D:/mysql/data
# 允許最大連線數
max_connections=500
# 服務端使用的字符集預設為8位元編碼的latin1字符集
character-set-server=utf8
# 建立新表時將使用的預設儲存引擎
default-storage-engine=INNODB

2,這個時候開啟CMD(記得以管理員身份執行),否則輸入命令時會出現install/remove of the service denied錯誤,進入mysql資料夾。cd d:/mysql/bin(如果不想每次都cd進到這個目錄,可以將該路徑新增到 path路徑下)

錄中輸入命令mysqld install2顯示成功之後再輸入mysqld --initialize 此時無任何提示(電腦卡就等一會)3再輸入:net start mysql 顯示:服務正在啟動...服務已經啟動啟動成功!

----------------------------------------------------------------------------------------------------

好!!接著我來說說我遇到的坑

問題1: 安裝mysql服務時提示“找不到msvcp140.dll?

我伺服器的版本是windows server 2012 r2 版本的。剛開始輸入命令列的時候報這個錯。是因為缺少這個補丁Microsoft Visual C++ 2015 Redistributable Update 3

下載地址  https://www.microsoft.com/en-us/download/details.aspx?id=53587

問題2:安裝好服務後,有的時候運氣好,預設初始版本密碼是空的。但有的時候密碼為空是登陸不進去的。好問題來了,

D:\mysql\bin>mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

密碼為空 ,登陸不進去,很是煩躁一萬隻草泥馬路過,看了很多帖子,都是處理mysql5.11 的 現在8.0 處理不了。接著找辦法這個時候需要 關閉sql服務,在控制面板裡面的服務,找到mysql關掉。 也可以用命令列 net stop mysql 是關閉MySQL服務

在伺服器上用以下方式跳過登陸,進入mysql,在cmd中安裝一下方式操作
mysqld --console --skip-grant-tables --shared-memoryD:\mysql\bin>mysqld --console --skip-grant-tables --shared-memory2018-10-05T16:22:02.055800Z 0 [System] [MY-010116] [Server] D:\mysql\bin\mysqld.exe (mysqld 8.0.12) starting as process 94402018-10-05T16:22:06.832563Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.2018-10-05T16:22:06.914520Z 0 [System] [MY-010931] [Server] D:\mysql\bin\mysqld.exe: ready for connections. Version: '8.0.12'  socket: ''  port: 0  MySQL Community Server - GPL.2018-10-05T16:22:06.977960Z 0 [Warning] [MY-011311] [Server] Plugin mysqlx reported: 'All I/O interfaces are disabled, X Protocol won't be accessible'2018-10-05T16:22:12.006067Z 0 [System] [MY-013105] [Server] D:\mysql\bin\mysqld.exe: Normal shutdown.D:\mysql\bin>2018-10-05T16:22:13.198096Z 0 [System] [MY-010910] [Server] D:\mysql\bin\mysqld.exe: Shutdown complete (mysqld 8.0.12)  MySQL Community Server - GPL.
此時,重新開啟一個CMD視窗 ,之前的視窗保留著不要關閉!。按如下步驟操作mysql -u root;     # 這裡切記不要 加 -p。 要不會強制要你輸入密碼才能登陸
update user set authentication_string='' where user='root';   # 此時密碼一定要留空!資料庫裡面的密碼預設是加密過的,以前的password(123)函式在8.0版本後就不能用了。
flush privileges; (不提交不生效)

現在 root帳戶終於有了初始密碼,此時密碼為空!!,也只能為空!!否則你會登陸不進去的 ,儲存進去會像md5 一樣加密過的字串在表裡。

問題3 , 如何修改root 密碼

alter user 'root'@'%' identified by '123';

或alter user 'root'@'localhost' identified by '123';

退出 quit; 開啟cmd  用修改密碼為123:mysqladmin -uroot -p password 123 

此時,基本上解決 了mysql的服務端的問題了,現在我們把焦點移動到客戶端。  假設現在的場景服務端和客戶端不在同一臺機子上。 我們需要安裝下客戶端的工具

第二個是 Navicat Premium 12 工具,破解版就自己去找啦。相對 這個工具可以幫你剩下很多事,比如對命令列比較不在行的同學可以選下的這個版本

問題4 ,無法遠端登陸訪問遠端伺服器上面的mysql

就是用上面兩個客戶端工具 ,都無法登陸伺服器,因為預設mysql是不讓客戶端遠端登陸的,這個時候 第一步需要檢查阿里雲伺服器的安全組策略,新增3306 埠的入口,

第二步,回到伺服器 ,進入cmd ,將原先表中的資料 localhost改成 ‘%’ , 也可以改成 指定的ip地址 如 ‘192.168.0.0,‘192.168.0.1,‘192.168.0.2’

mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select user, authentication_string from user;

修改好後,這時 ,MySQL Workbench ,你會發現可以登陸進去了。但是 Navicat Premium ,會報出“客戶端連線caching-sha2-password問題” 這個是由於mysql 不太願意讓第三方工具接入客戶端查詢,

在密碼反編譯的時候故意沒有對接好。接著我們來處理最後一個問題.

問題5 : Navicat Premium 客戶端連線caching-sha2-password問題

 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密規則

  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下使用者的密碼  

 FLUSH PRIVILEGES; #重新整理許可權 

注意了! 如果你在問題4中已經把localhost 改成 % 的 ,  上面的語句 也要跟著改  比如:'root'@'%',如果是跟著ip的 也以此類推!

再重置下密碼:alter user 'root'@'localhost' identified by '123qwe';

最後 基本上常見的坑就踩完了,寫的有點粗糙,熬夜分銷的一點心得,大家湊乎這看吧。