1. 程式人生 > >phpStudy下替換mysql5.7.16

phpStudy下替換mysql5.7.16

phpStudy中的mysql版本是5.5,而mysql5.5在執行`createTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '資料插入時間'時(也就是預設值為CURRENT_TIMESTAMP),mysql會報錯。解決辦法是將phpStudy中mysql的版本替換為5.6及以上。

安裝完phpStudy後將MySQL下的所有檔案刪除,解壓mysql5.7.16的版本。安裝過程如下:

#特別重要
1.修改my-default.ini

在其中修改或新增配置: 

[mysqld] 

basedir=E:\WAMP\MySql(mysql所在目錄) 

datadir=E:\WAMP\MySql\data (mysql所在目錄\data)

2.以管理員身份執行cmd(win10右鍵左下角開始按鈕選擇以管理員身份執行cmd即可)

以管理員身份執行cmd(一定要用管理員身份執行,不然許可權不夠),

輸入:cd C:\Program Files\MySQL\MySQL Server 5.6\bin 進入mysql的bin資料夾(不管有沒有配置過環境變數,也要進入bin資料夾,否則之後啟動服務仍然會報錯誤2)

輸入mysqld -install(如果不用管理員身份執行,將會因為許可權不夠而出現錯誤:Install/Remove of the Service Denied!) 

安裝成功

3.執行mysqld  --initialize(若沒有init則不存在data目錄,自然無法啟動成功)

4.安裝成功後就要啟動服務了,繼續在cmd中輸入:net start mysql,服務啟動成功!

服務啟動成功之後,就可以登入了,輸入mysql -u root -p(此時你並不知道密碼是什麼,請檢視追加內容),登入成功!

 

追加內容:

在安裝mysql5.7版本時,經常會遇到mysql -u root -p直接回車登陸不上的情況,原因在於5.7版本在安裝時自動給了一個隨機密碼,
坑爹的是在init步驟的時候不像linux系統會給出命令列提示,需要手動在mysql目錄下搜尋*.err,以文字形式開啟才能看到如下內容:
"A temporary password is generated for

[email protected]: >mso<k70mrWe"


每個人的密碼都不一樣,所以直接搜素這句話找不到,這句話中[email protected]:後面的是密碼
[email protected]:是固定的,所以搜尋[email protected]:能找到類似的語句

修改資料庫密碼

SET PASSWORD = PASSWORD('root');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;

 

在安裝的過程中,*.err檔案下並沒有找到。如果出現這種情況,則用如下解決辦法:

1、以管理員身份執行cmd,輸入net stop mysql

停止MySQL服務

2、開啟一個cmd視窗輸入mysqld --skip-grant-tables,注意這個cmd命令視窗不要關閉

3、

重新開啟一個cmd視窗,執行下面命令

C:\Users\Administrator>mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.7.19 MySQL Community Server (GPL)

 

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

 

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> use mysql

Database changed

mysql> update user set authentication_string=password('123456') where user='root';

Query OK, 0 rows affected, 1 warning (0.06 sec)

Rows matched: 1  Changed: 0  Warnings: 1

 

mysql>

將mysql的root密碼重置為123456

4、繼續以管理員身份執行cmd,輸入net start mysql

啟動MySQL服務

5、以重置後的root密碼登入測試,如下圖mysql -uroot -p123456

 

再次執行`createTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '資料插入時間',這時就不會報錯了。