1.MySQL初始化報(bào)錯(cuò):OS errno 13 - Permission denied
-
問(wèn)題簡(jiǎn)述:
在學(xué)習(xí)spring框架過(guò)程中第一次接觸MySQL,按照教程下載并編寫(xiě)好配置文件后,在控制臺(tái)中使用命令mysqld --initialize --console對(duì)MySQL進(jìn)行初始化,結(jié)果報(bào)錯(cuò):
mysqld: Can't create directory 'C:\Program Files\MySQL\mysql-8.0.19\data\' (OS errno 13 - Permission denied)
-
解決方案:
閱讀報(bào)錯(cuò)信息,發(fā)現(xiàn)是由于系統(tǒng)權(quán)限問(wèn)題導(dǎo)致命令無(wú)法在指定目錄下創(chuàng)建文件夾。因此應(yīng)該只需要修改MySQL目錄下文件夾的操作權(quán)限即可。
修改文件夾權(quán)限
如上圖在目錄C:\Program Files\MySQL\mysql-8.0.19將Users和ALL APPLICATION PACKAGES兩個(gè)組的權(quán)限均改為完全控制后,再次運(yùn)行初始化命令,初始化成功,問(wèn)題解決。 -
心得體會(huì):
Win10下的C:\Program Files目錄雖然是應(yīng)用程序?qū)S媚夸洠胀ㄓ脩?hù)的權(quán)限卻默認(rèn)為只讀,因此可以預(yù)想到將MySQL安裝在此目錄下會(huì)導(dǎo)致一系列的權(quán)限問(wèn)題。于是我直接釜底抽薪,將cmd修改為默認(rèn)以管理員身份運(yùn)行。修改控制臺(tái)快捷方式屬性
2.MySQL初次登陸報(bào)錯(cuò):Can't connect to MySQL server on 'localhost'
-
問(wèn)題簡(jiǎn)述:
MySQL完成安裝后初次登陸root用戶(hù),輸入密碼后卻一直提示錯(cuò)誤信息:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
-
解決方案:
查閱資料得知,該錯(cuò)誤是由于MySQL剛安裝好初次登陸時(shí)相關(guān)服務(wù)沒(méi)有開(kāi)啟導(dǎo)致,在控制臺(tái)中輸入命令net start mysql,顯示如下:
C:\Windows\system32>net start mysql
MySQL 服務(wù)正在啟動(dòng) .
MySQL 服務(wù)已經(jīng)啟動(dòng)成功。
之后即可正常登錄,問(wèn)題解決。
-
心得體會(huì)
一些系統(tǒng)軟件安裝完成后的重啟計(jì)算機(jī)步驟是不是就是為了啟動(dòng)相關(guān)服務(wù)呢?
另:初次登錄后用ALTER USER USER() IDENTIFIED BY 'newpassword';命令修改密碼后才可進(jìn)行其他操作。
3.IDEA連接MySQL報(bào)錯(cuò):The server time zone value '?й???????' is unrecognized or represents more than one time zone
-
問(wèn)題簡(jiǎn)述:
在IDEA中用Maven項(xiàng)目連接數(shù)據(jù)庫(kù)進(jìn)行操作時(shí)報(bào)錯(cuò),具體錯(cuò)誤信息如下:
Exception in thread "main" java.sql.SQLException: The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.
-
解決方案:
通過(guò)查閱資料得知,當(dāng)在IDEA中連接MySQL數(shù)據(jù)庫(kù)時(shí),導(dǎo)入并使用mysql connector/j 6.x以上的包就會(huì)出現(xiàn)如上錯(cuò)誤。解決方法是在url后通過(guò)serverTimezone選項(xiàng)配置時(shí)區(qū)。具體方法如下:
在原本的url
jdbc:mysql://localhost:3306/spring_test
后添加?serverTimezone=UTC:
jdbc:mysql://localhost:3306/spring_test?serverTimezone=UTC
配置好時(shí)區(qū)(UTC),即可成功連接數(shù)據(jù)庫(kù)
-
心得體會(huì):查閱了有關(guān)MySQL時(shí)區(qū)的相關(guān)資料,雖然并不是非常明白,但也知道了這個(gè)問(wèn)題的根源來(lái)自于MySQL數(shù)據(jù)庫(kù)時(shí)區(qū)并非東八區(qū),而是UTC(協(xié)調(diào)世界時(shí)),比東八區(qū)(北京時(shí)間)少了八個(gè)小時(shí),而當(dāng)使用sql語(yǔ)句時(shí)則默認(rèn)使用東八區(qū),因此產(chǎn)生了兩者之間的時(shí)區(qū)沖突
represents more than one time zone,而6.x之前的版本或許會(huì)在sql語(yǔ)句沒(méi)有涉及時(shí)間時(shí)忽略此問(wèn)題。所以解決此錯(cuò)誤的根源在于規(guī)定好統(tǒng)一的時(shí)區(qū)。上述方法雖然步驟簡(jiǎn)單,但每次都要進(jìn)行配置實(shí)際任務(wù)量繁瑣,因此更釜底抽薪的辦法是將數(shù)據(jù)庫(kù)的時(shí)區(qū)直接修改為東八區(qū),對(duì)應(yīng)的sql語(yǔ)句為:
set global time_zone = '+8:00';//設(shè)置時(shí)區(qū)為東八區(qū)
flush privileges;//刷新權(quán)限
或者直接在配置文件中對(duì)MySQL的默認(rèn)時(shí)區(qū)進(jìn)行設(shè)置,windows為my.ini位于安裝目錄下,linux為my.cnf,在etc文件夾下,沒(méi)有可自己創(chuàng)建。在文件中添加以下代碼:
[mysqld]
//使用默認(rèn)時(shí)區(qū)東八區(qū)
default-time_zone = '+8:00'

