虛驚一場,主要問題是 Navicat Premium 連接 mysql8 Client does not support authentication 。
1. 下載 官網下載壓縮包: mysql-8.0.11-winx64.zip
2. 解壓到想要安裝的目錄:然后在安裝包下新建文件my.ini 內容如下:(注意basedir/datadir...data根據自己的安裝位置配置)
[client]
port=3306
default-character-set=utf8
[mysqld]
#設置mysql的安裝目錄
basedir=D:\DevelopInstall\mysql-8.0.11-winx64
#設置mysql的數據目錄
datadir=D:\DevelopInstall\mysql-8.0.11-winx64\data
character_set_server=utf8
#sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#開啟查詢緩存
explicit_defaults_for_timestamp=true
3. 以管理員身份運行cmd 進入: mysql-8.0.11-winx64/bin目錄下: 執行命令 mysqld –-initialize
(在data下可以看到.err文件,其中藏有你首次登錄root的密碼)如:
A temporary password is generated for root@localhost: Cu/fkq0Mts?t
4. cmd中 執行mysqld install 安裝服務,
5.cmd中 net start mysql 啟動服務
6.cmd中 mysql -u root -p 登陸 .err文件中密碼粘貼過來用於登陸
7.登陸成功。
修改為新密碼:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> use mysql;
mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | localhost |
+------------------+-----------+
mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.05 sec)
==============至此安裝完畢,可以運程訪問了。 下邊是另外一條岔路。========================
8*************** 現在我用 Navicat Premium 連接 mysql 提示:Client does not support authentication protocal requested by server; ...
我以為是root沒有允許遠程ip連接於是准備賦予權限:
grant all privileges on *.* to root@'%' identified by '123456';
mysql> grant all privileges on *.* to root@'%' identified by '123456';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'ident
ified by '123456'' at line 1
-------------反復執行反復錯誤,反復百度查詢錯誤提示,並沒有什么用處。最后google代理: 一下子就有結果了:
https://stackoverflow.com/questions/50177216/how-to-grant-all-privileges-to-root-user-in-mysql-8-0
我看了上半段: 大意是grant all privileges on *.* to root@'%' identified by '123456'; 報錯啊,mysql8與5.1有差異啊,該怎么賦予權限給root也能被遠程ip訪問啊。
最后看到
mysql> CREATE USER 'java'@'%' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.31 sec)
mysql> GRANT ALL PRIVILEGES ON . TO 'java'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.16 sec)
總之,是得創建新用戶並且順便賦予權限。那么我就如上改了'java'@'%' 用戶用作為遠程連接了。
9.之后還是連不上
Navicat Premium 連接 mysql 提示:Client does not support authentication protocal requested by server; ...
最后:
https://www.cnblogs.com/xiaojian1/p/mysql.html
alter user 'test'@'%' identified with mysql_native_password by '123'; 解決煩惱Navicate可以正常連接了。
虛驚一場,主要問題是 Navicat Premium 連接 mysql8 Client does not support authentication 。