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]:後面的是密碼
[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 '資料插入時間',這時就不會報錯了。