今天在阿里雲window服務器上配置mysql環境,踩了一些坑,分享出來。須要的朋友能夠看看。額,或許有人要吐槽我爲何不在linux上去配置,額,由於我window的那臺服務器配置相對高些。本人技術方面偏向於.net,如今接觸php項目因此搭建LAMP環境。只不過個人數據庫放在window上的這臺服務器。
言歸正傳php
先選擇版本,到mysql官方網站下載,你會發現各宗版本看得眼花繚亂的,不要驚慌先選擇MySQL Community Edition版, 而後再跳轉的頁面下,你會發現還會有不少子版本要選,英文要很差的同窗,選擇上會有點吃力,可選子版本有兩個:mysql
(1)先說 一個是最省事的版本 ,直接下一步下一步安裝就好,有點像sqlserver 純界面展現。 https://dev.mysql.com/downloads/installer/ ,配置比較高的服務器,或懶得去搞一堆命令行的朋友能夠直接下載這個。看完這裏能夠直接省略下面的內容了。linux
(2) 第二個版本,MySQL Community Server版本。 這個版本比較適合服務器安裝。佔用資源較小。部署也比較靈活。缺點若是不熟悉的話坑會比較多。 sql
咱們先快速的說下 安裝的步驟,先下載文件,解壓縮到目標文件夾位置.好比 D:/mysql 。數據庫
1,在mysql文件夾 下新建一個文件名爲my.ini , 而後錄入信息以下windows
[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路徑下)安全
#mysql安裝完成 >mysqld install #2初始化配置此時會用到以前的配置文件my.nin 而後在data目錄生成數據 >mysqld --initialize #顯示:服務正在啓動...服務已經啓動啓動成功! >net start mysql
----------------------------------------------------------------------------------------------------服務器
好!!接着我來講說我遇到的坑socket
問題1: 安裝mysql服務時提示「找不到msvcp140.dll?ide
我服務器的版本是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-memory
D:\mysql\bin>mysqld --console --skip-grant-tables --shared-memory
2018-10-05T16:22:02.055800Z 0 [System] [MY-010116] [Server] D:\mysql\bin\mysqld.exe (mysqld 8.0.12) starting as process 9440
2018-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 密碼
在操做mysql命令行的時候 結尾務必帶着" ;" 要不回車鍵按下去會一直換行
mysql > alter user 'root'@'%' identified by '123';
或
mysql > alter user 'root'@'localhost' identified by '123';
或 輸入quit; 從 mysql命令行回到 cmd ,進入mysql安裝目錄/bin
>mysqladmin -uroot -p password 123
此時,基本上解決 了mysql的服務端的問題了,如今咱們把焦點移動到客戶端。 假設如今的場景服務端和客戶端不在同一臺機子上。 咱們須要安裝下客戶端的工具
推薦兩個工具 第一個是mysql的 MySQL Workbench
第二個是 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 -p #登錄mysql
mysql>use mysql; #使用mysql庫 mysql>update user set host = '%' where user = 'root'; # 修改host的限制,也能夠指定ip訪問,改爲你客戶端ip就好 mysql>select user, authentication_string from user;
修改好後,這時 ,MySQL Workbench ,你會發現能夠登錄進去了。可是 Navicat Premium ,會報出「客戶端鏈接caching-sha2-password問題」 這個是因爲mysql 不太願意讓第三方工具接入客戶端查詢,
在密碼反編譯的時候故意沒有對接好。接着咱們來處理最後一個問題.
問題5 : Navicat Premium 客戶端鏈接caching-sha2-password問題 ,進到cmd ,登錄到mysql
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密規則 mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用戶的密碼 mysql>FLUSH PRIVILEGES; #刷新權限
#執行完後此時須要重置下你的密碼 ,由於密碼加密規則已經改變 不重置密碼你會登錄不上去的!
mysql> alter user 'root'@'localhost' identified by '123';
注意了! 若是你在問題4中已經把localhost 改爲 % 的 , 上面的語句 也要跟着改 好比:'root'@'%',若是是跟着ip的 也以此類推. 不然執行會報錯!
最後 基本上常見的坑就踩完了,寫的有點粗糙,熬夜分享的一點心得,你們湊乎這看吧。