我遇到的問題是Navicat可以登錄MySQL但自己本地命令行就會報如上標題的問題。
mysql 8.0版本的問題
正確步驟。
方法一
1.下載MySQL8.0后解壓,根目錄沒有data文件夾和my.ini文件,我們也不要創建。
(若已經安裝了MySQL的將服務停止,刪除安裝目錄下的data和my.ini,當然我建議你找個地方吧my.ini暫存一下,還有你需要的數據庫備份文件
然后刪除服務
mysqld --remove
關於找不到my.ini的問題(經檢驗,my.ini文件還是要在這加入才有效,不然下面這些步驟完成之后再做就打不開服務了)
你可能會在這里找到
c盤,programData文件夾里面的MySQL目錄下
當然還有可能在
圖二來自MySQL 8.0版本安裝后,安裝目錄下找不到my.ini文件
如果你哪里都找不到可以來下載,當然也可以自己寫,但下載的這個會比較全,自己修改起來也好找
my.ini下載
如果這個下載連接無效的話通知我一下哦,還有積分如果被動被改高了,也給我說一下我改成0積分。
一些關鍵修改(主要看你的需求,做些設置)
[client]
default-character-set = utf8
port=3306
[mysql]
default-character-set = utf8
[mysqld]
character-set-server = utf8
port=3306(自己用什么接口填什么接口,默認是3306)
basedir=根目錄(自行填自己的安裝位置)
datadir=根目錄(自行填自己的安裝位置)\data
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
2.將“根目錄/bin”路徑添加到環境變量中。
3.用管理員啟動命令行,win10是右鍵左下角win圖標,選擇“Windows powershell(管理員)”。
4.輸入
mysqld --initialize-insecure --user=mysql
這一步可能等待時間很長
5.然后輸入
mysqld --install mysql
6.輸入
net start mysql
7.輸入
mysql -u root
初始化后不需要輸入密碼
8.初始化密碼
alter user 'root'@'localhost' identified by '123456'
退出
exit
再次登錄
mysql -u root -p
輸入密碼123456就可以登錄了
9.建立遠程訪問
#使用初始庫
>use mysql;
#查看用戶表
>select host, user, plugin from user;
#發現沒有host是%的用戶root,於是創建一個
>create user 'root'@'%' identified by '123456';
#給權限,第二句不能用就退出再登一次
>GRANT ALL privileges on *.* to 'root'@'%' with grant option;
>flush prilileges;
這時再拿Navicat登錄就可以登錄了,注意自己的端口號不要寫錯了
方法二
1、在原有數據庫情況下,把data文件夾刪除,保留my.ini文件,把需要的內容填上,不需要的內容注釋掉
2、將“根目錄/bin”路徑添加到環境變量中
3、用管理員啟動Windows powershell
4、執行下列語句
mysqld --remove
mysqld --initialize --console (該語句會生成一個初始密碼,例如這樣的root@localhost: 4aO40dXvxg+S,把后面的內容保存,之后要填密碼)
mysqld --install
net start mysql
mysql -u root -p(該語句接下來填的密碼就是上面保存的那個)
alter user 'root'@'localhost' identified by '123456'(修改初始密碼)
按照上面方法一的創建新用戶等步驟就可以了