關於mysql user 表的主鍵,百度說是user + host 構成了主鍵
1:問題如下:
[root@izbp19kvzy03hpq35bq1jxz ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
這一段是拒絕user=root,host=localhost 的用戶訪問,需要數據密碼
解決方案:1):設置mysql為無密碼啟動
(修改MySQL的登錄設置:vi /etc/my.cnf (部分Linux安裝了vim,其命令則改為vim /etc/my.cnf)
在[mysqld]的段中加上一句:skip-grant-tables保存並退出vi。)
2):重新啟動mysqld,清空密碼
重啟mysql:service mysqld restart(這一步不能少,這是讓my.cnf的修改生效)
進入mysql:mysql -u root
進入mysql后,切換數據庫至mysql:use mysql;
清空密碼:update user set authentication_string='' where user='root';
3):退出mysql:exit; 並且 屏蔽skip-grant-tables:vi /etc/my.cnf,在skip-grant-tables前面添加#
4):重啟mysql.
至此 mysql8.0 可以不需要密碼登錄了。登錄成功之后重新設置密碼和刷新權限 就可以遠程訪問了
設置密碼:
'root'@'%' 'root'等於user表里的user,'%' 等於user表里的host
ALTER USER 'root'@'%' IDENTIFIED BY '新密碼' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密碼';
讓密碼馬上生效:FLUSH PRIVILEGES;
標記以便日后使用