在mysql5.7存在的情況下在安裝一個mysql8.0以上版本數據庫的辦法

我的第一次安裝:(這是我第一次安裝的記錄主要通過改5.7的端口來實現8.0的無障礙免安裝,建議網友們看我第二次在公司服務器上安裝的記錄》》》往下翻有第二次安裝的教程)
第一次安裝是在我本機電腦,環境是win10
想想都難受,爲了想保住本機的5.7版本,在不卸載的情況下裝一個mysql8.0以上版本,
1.爲了方便起見我們先把本機mysql服務都停了(快捷win+R 運行 【services.msc】 打開【服務】然後將MYSQL57關了)
2.如果你的my.ini文件在安裝目錄直接打開,如果不在,一般在c盤全局搜一下my.ini就有了,改一下里面的客戶端與服務端兩個端口,可以改成3307,反正避開3306就行
3.官網上下載好非安裝版(即解壓幫)的mysql,解壓後放到你想安裝的盤,然後以管理員身份打開dos(即cmd)
初始化數據庫
在MySQL安裝目錄的 bin 目錄下(即cd mysql8的bin目錄路徑)執行命令:
mysqld --initialize --console
執行完成後,會打印 root 用戶的初始默認密碼,比如:
2018-05-01T14:35:01.507037Z 0 [Warning] [MY-010915] [Server] ‘NO_ZERO_DATE’, ‘NO_ZERO_IN_DATE’ and ‘ERROR_FOR_DIVISION_BY_ZERO’ sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2018-05-01T14:35:01.507640Z 0 [System] [MY-013169] [Server] D:\Program\MySQL8\bin\mysqld.exe (mysqld 8.0.11) initializing of server in progress as process 11064
2018-05-01T14:35:01.508173Z 0 [ERROR] [MY-010340] [Server] Error message file ‘D:\Program Files\mysql-8.0.11-winx64\share\english\errmsg.sys’ had only 1090 error messages, but it should contain at least 4512 error messages. Check that the above file is the right version for this program!
2018-05-01T14:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ
2018-05-01T14:35:07.017280Z 0 [System] [MY-013170] [Server] D:\Program\MySQL8\bin\mysqld.exe (mysqld 8.0.11) initializing of server has completed
其中,第4行的“APWCY5ws&hjQ”就是初始密碼,在沒有更改密碼前,需要記住這個密碼,後續登錄需要用到。
要是你手賤,關快了,或者沒記住,那也沒事,刪掉初始化的 datadir 目錄,再執行一遍初始化命令,又會重新生成的。當然,也可以使用安全工具,強制改密碼,用什麼方法,自己隨意。

3.安裝並啓動服務
在MySQL安裝目錄的 bin 目錄下執行命令:
mysqld --install [服務名]
後面的服務名可以不寫,默認的名字爲 mysql。當然,如果你的電腦上需要安裝多個MySQL服務,就可以用不同的名字區分了,比如 mysql5 和 mysql8。
安裝完成之後,就可以通過命令net start mysql8服務名 啓動MySQL的服務了。

4.修改密碼
在MySQL安裝目錄的 bin 目錄下執行命令:
mysql -uroot -p
這時候會提示輸入密碼,記住了第3步的密碼,填入即可登錄成功,進入MySQL命令模式
在MySQL8.0.4以前,執行
SET PASSWORD=PASSWORD(’[修改的密碼]’);
就可以更改密碼,但是MySQL8.0.4開始,這樣默認是不行的。因爲之前,MySQL的密碼認證插件是“mysql_native_password”,而現在使用的是“caching_sha2_password”。
因爲當前有很多數據庫工具和鏈接包都不支持“caching_sha2_password”,爲了方便,我暫時還是改回了“mysql_native_password”認證插件。
在MySQL中執行命令:
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;(注意一定要有分號)(注意一定要有分號)
修改密碼驗證插件,同時修改密碼。
如果想默認使用“mysql_native_password”插件認證,可以在配置文件中配置default_authentication_plugin項。
[mysqld]
default_authentication_plugin=mysql_native_password

坑的總結
最後我要提醒訪客的是:如果你按照以上方法反覆安裝出現dos登入時報錯的情況,那麼請不要糾結,直接把這個解壓後的8.0以上版本刪掉,記得服務名也要同時刪掉刪掉 dos命令:sc delete mysql8服務名 ***注意·***mysql數據庫的數據的存放目錄裏的內容也要刪掉,然後將你下載的mysql8zip包重新解壓一邊放在要安裝的位置重新按照上面方法安裝,這點要切記,不可想當然,不然會喫掉你很多時間(這就是我一直裝了很久的原因),如果這樣還不行,可能還需要配置下環境變量,因爲我在安裝的過程中也配置了環境變量,不過我認爲這個關係不大,至於配置環境變量的方法和配置Java環境變量方式一樣,不過如果5.7的版本若也存在與環境變量中,請先刪掉, 注意配置完請保存,記得最後還要點一個確定的,配完環境變量還要重啓,,,,
最後還有一點要說明就是我這個8.0以上版本的安裝過程中沒有涉及到這個版本mysql 的my.ini文件的修改,畢竟我在一開始就改了5.7版本的mysql把3306端口讓了出來。

我的第二次安裝
我的第二次安裝是在公司新部署的內網服務器上,應該就是一塊刀片式服務器上,系統環境是windows Server2012 ,下面展示安裝步驟(這裏演示的是免安裝版的安裝步驟):
1.到mysql官網上下載8.0以上版本的數據庫:

社區版(即免安裝版):https://downloads.mysql.com/archives/community/

安裝版:https://downloads.mysql.com/archives/installer/

2.解壓下載的免安裝版程序到指定文件夾
進入bin同級目錄
拷入my.ini文件如圖:在這裏插入圖片描述
my.ini文件可以自己創建,文件內容是:

[mysql]
# 設置mysql客戶端默認字符集
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4
[mysqld]
default_authentication_plugin=mysql_native_password
#設置3308端口,目的是避開5.7的默認3306端口
port = 3308 
# 設置mysql的安裝目錄
basedir=D:\Program Files\mysql-8.0.11-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=D:\Program Files\mysql-8.0.11-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8mb4
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB 
max_allowed_packet=100M

3.新建mysql數據庫的數據的存放目錄(上面配置文件有要求寫地址)

4.以管理員身份運行dos(cmd),然後切入bin目錄
執行命令:mysqld --defaults-file=F:\MySQL\my.ini --initialize --console
***這裏路徑自己修改,但是注意***如果執行不成功報路徑找不到那麼試試改成相對路徑如:

mysqld --defaults-file=..\my.ini --initialize --console

這一步是在初始化mysql,注意記錄下輸出的密碼

5.設置服務名:在bin目錄執行

mysqld install mysql8 

(mysql8是服務名可以自己命名)

6.啓動mysql

net start mysql8

7.登入mysql8
輸入命令mysql -uroot -P 3308 -p
***注意***這裏指定端口號必須要加否則會登不上
登陸後就是改密碼設置遠程登陸之類的

1、實現遠程連接(改表法)依次執行
將host字段的值改爲%就表示在任何客戶端機器上能以root用戶登錄到mysql服務器,建議在開發時設爲%。
update user set host = ’%’ where user = ’root’;

mysql> use mysql;

mysql> update user set host = ‘%’ where user = ‘root’;

mysql> select host,user,password from user;
±-------------±-----±------------------------------------------+
| host | user | password |
±-------------±-----±------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
±-------------±-----±------------------------------------------+

這樣在遠端就可以通過root用戶訪問Mysql.

2、以上還是不能遠程連接那麼在執行以下方法
將權限改爲ALL PRIVILEGES

mysql> use mysql;
Database changed
mysql> grant all privileges on . to root@’%’ identified by “password”;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
±-------------±-----±------------------------------------------+
| host | user | password |
±-------------±-----±------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
±-------------±-----±------------------------------------------+

這樣機器就可以以用戶名root密碼root遠程訪問該機器上的MySql.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章