下載
MySQL下載地址
選擇下載64位(看自己電腦是32位還是64位)
點擊下載之后,它會讓你登錄,沒有Oracle賬戶,跟著它的步驟注冊一個就好了。
安裝
打開下載好的壓縮包解壓到你的某一目錄下,這里我放到了D:\MySQL下
如上圖所示,在你解壓的文件夾下是沒有my.ini這個配置文件的,需要自己創建并用記事本打開,把下面這些代碼粘貼復制進去
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=D:\MySQL\mysql-5.7.16-winx64
# 設置mysql數據庫的數據的存放目錄
#datadir=D:\MySQL\mysql-5.7.16-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
我在安裝的時候,找了一個教程,教程中上面的#datadir=D:\MySQL\mysql-5.7.16-winx64\data這句代碼是沒有注釋掉的,于是我就在之后的安裝中遇到了麻煩。
填坑
首先配置默認文件
當我沒有注釋掉那句代碼時,也就是這樣子配置的
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=D:\MySQL\mysql-5.7.16-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=D:\MySQL\mysql-5.7.16-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
接下來開始安裝
安裝并啟動
直接搜cmd,右鍵->以管理員身份運行
進入bin文件目錄下
接下來輸入安裝、啟動命令
mysql install
net start mysql
出現如下圖問題
無法啟動卻無報錯,在計算機管理服務里也無法手動啟動。有大神說可以執行
mysqld --console
命令查看錯誤信息,如下圖,意思是說沒有data文件,而在my.ini配置文件中代碼里設置了(datadir=D:\MySQL\mysql-5.7.16-winx64\data)
所以我就自己跑去新建了個data文件夾,再啟動然而依舊錯誤漫天飛,Excuse me?
最后終于找到靠譜的答案,data文件是不需要自己配置的,先刪除自己自作聰明的data文件,然后注釋掉my.ini中的datadir代碼,配置環境變量然后執行
mysqld --initialize
即可自動生成data文件,這個時候再執行
net start mysql
命令,可以看到MySQL啟動成功
登錄MySQL
輸入命令 mysql -uroot -p 回車,輸入密碼,按理說初次登錄是沒有密碼的,直接回車即可登錄,然而事實上,在執行 mysqld --initialize命令時它不僅自動創建了data數據,還隨機分配了密碼,在你的文件中搜索 .err后綴的文件,以記事本方式打開,你會看到下圖
對,這就是你的密碼,每個人不一樣,看你自己的,輸入進去登錄就可以了。接下來你想進行一些操作,發現它會提示你,需要先重置密碼。那么接下來再看重置密碼的坑。
重置密碼
在網上查找方法,基本上都是如下步驟:
然而我輸入命令結果是這樣子的
正確的打開方式是首先在my.ini配置文件的[mysqld]下面加上
[mysqld]
explicit_defaults_for_timestamp = true
然后輸入如下命令,回車后會一直停止,然后打開另一個cmd命令窗口
mysqld --default-file="D:\MySQL\mysql-5.7.16-winx64\my.ini" --skip-grant-tables
mysql -u root
輸入更改密碼的語句
use mysql
UPDATE mysql.user SET password=PASSWORD("lyymysql") WHERE User='root';
然而結果如圖
所以查看數據庫,發現5.7版本里的user表里已經沒有了password這個字段
正確姿勢:
update mysql.user set authentication_string=PASSWORD('lyymysql') WHERE User='root';
flush privileges
exit
吁~這下終于可以啟動登錄MySQL 了
密碼過期
安裝好Mysql之后簡單玩兒了一下命令,之后就束之高閣,現在做的項目需要用到Mysql,登錄之后執行查看數據庫的命令,發現報了Error,如下:
大意是執行此命令前你必須先修改用戶密碼(通過alter user命令),也就是說mysql是沒任何問題的,執行命令也沒問題,只是它的機制強制要求你必須修改密碼,沒辦法只能改咯
在網上查找原因是因為PCI DSS,即PCI數據安全標準(Payment Card Industry Data Security Standard)要求用戶每隔90天就要更改密碼,mysql版本5.6.6版本起,添加了password_expired功能,它允許設置用戶的過期時間。這個特性已經加入mysql數據庫表,可以修改表數據自行設置,這里我重點說明如何解決密碼過期問題。
SET PASSWORD = PASSWORD('XXX');
//重置密碼
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
//設置讓其不過期
flush privileges;
//刷新權限
exit
//退出重新登錄
mysql -u root -p
再次使用show databases
查看數據庫,如下圖:
這一上午踩坑踩得真呀么歡快~
小提示:以上命令中的路徑、密碼都要輸入自己的,不然是不對的。
如果安裝過程中遇到了其他問題可以留下評論。