包括初始化root用戶密碼password的過程以及兩個常見問題的解決方法 1. 下載MySQL zip包 進入 "MySQL官網" 按需選擇zip包下載並解壓, 比如現在我電腦裡面下載的是mysql 5.7.17 winx64 http://dev.mysql.com/downloads/mysq ...
包括初始化root用戶密碼password的過程以及兩個常見問題的解決方法
1. 下載MySQL zip包
進入[MySQL官網](http://dev.mysql.com/downloads/mysql)按需選擇zip包下載並解壓,
比如現在我電腦裡面下載的是mysql-5.7.17-winx64
http://dev.mysql.com/downloads/mysql/
2. 編輯MySQL配置文件
打開解壓的mySQL.zip包,在裡面找到my-defalult.ini, 該文件是MySQL的預設配置文件
此處推薦大家複製一份,並改名my.ini
編輯my.ini,此處我只配置了埠,MySQL的安裝目錄以及MySQL資料庫存放目錄
> [mysqld]
> # 設置3306埠
> port = 3306
> # 設置MySQL的安裝目錄
> basedir=C:\mysql-5.7.17-winx64\mysql-5.7.17-winx64
> # 設置MySQL資料庫的數據的存放目錄
> datadir=C:\mysql-5.7.17-winx64\mysql-5.7.17-winx64\data
3. 安裝並配置MySQL服務
使用admin許可權打開CMD運行視窗,進入到MySQL的bin目錄下執行以下install命令
C:\mysql-5.7.17-winx64\mysql-5.7.17-winx64\bin>mysqld -install
Service successfully installed.
運行net start mysql命令打開MySQL服務
net start mysql
PS:問題1
描述:啟動MySQL服務失敗
C:\mysql-5.7.17-winx64\mysql-5.7.17-winx64\bin>net start mysql
The MySQL service is starting.
The MySQL service could not be started.
The service did not report an error.
More help is available by typing NET HELPMSG 3534.
解決方法:
通過一些網路上面的搜索得知,版本5.7以後在啟動MySQL服務前,需要初始化bin\data目錄,
我的做法是:
- 創建bin\data目錄,如果存在刪掉以前的
- 在剛剛的admin許可權的運行視窗執行初始化命令,以此來生成沒有密碼的root用戶:
C:\mysql-5.7.17-winx64\mysql-5.7.17-winx64\bin>mysqld --initialize-insecure
- 再次嘗試打開MySQL服務,不出意外,會返回success:
C:\mysql-5.7.17-winx64\mysql-5.7.17-winx64\bin>net start mysql
The MySQL service is starting.
The MySQL service was started successfully.
檢查MySQL服務已經打開
運行net start命令列出所有已經打開的windows服務,在輸出中找到MySQL代表成功:
C:\mysql-5.7.17-winx64\mysql-5.7.17-winx64\bin>net start
These Windows services are started:
...
MySQL
...
4. 初始化root用戶密碼
進入MySQL
由於我們剛剛生成的root沒有附帶密碼,所以可以通過以下命令免密碼進入MySQL
mysql -u root
選擇使用MySQL資料庫
mysql> use mysql;
通過sql語句查看user表數據, 可以確定目前root無密碼
mysql> select user, authentication_string from user;
+-----------+-------------------------------------------+
| user | authentication_string |
+-----------+-------------------------------------------+
| root | |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
為MySQL root用戶初始化密碼
mysql> update user set authentication_string=password('密碼') where user='root';
Query OK, 1 row affected, 1 warning (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 1
PS:問題2
描述:使用以下命令初始化密碼失敗
mysql> update user set password=PASSWORD('密碼') where user='root';
解決方法:
可以通過查看user表信息得知,在新版的MySQL的user表中,已經去除掉了password欄位,
而用authentication_string替換,因此使用該的命令,會返回錯誤。
再次確認user表下麵的root用戶信息,可以看到現在root用戶已經擁有了密碼。
mysql> select user, authentication_string from user;
+-----------+-------------------------------------------+
| user | authentication_string |
+-----------+-------------------------------------------+
| root | *8B62E5775164CCBD6B3F9FFFC5ABCEFGHIGKLMNO |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
執行flush privileges命令使更改生效
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
退出MySQL
mysql> exit
Bye
使用root密碼登陸MySQL
C:\mysql-5.7.17-winx64\mysql-5.7.17-winx64\bin>mysql -u root -p
Enter password: *********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, 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>