ข้อผิดพลาด 1698 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost'


382

ฉันกำลังตั้งค่าเซิร์ฟเวอร์ใหม่และพบปัญหานี้ต่อไป

เมื่อฉันพยายามเข้าสู่ฐานข้อมูล MySQL ด้วยผู้ใช้รูทฉันได้รับข้อผิดพลาด:

ข้อผิดพลาด 1698 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost'

ไม่สำคัญว่าฉันจะเชื่อมต่อผ่านเทอร์มินัล (SSH) ผ่าน PHPMyAdmin หรือไคลเอนต์ MySQL เช่น Navicat พวกเขาทั้งหมดล้มเหลว

ฉันดูในตาราง mysql.user และรับสิ่งต่อไปนี้:

+------------------+-------------------+
| user             | host              |
+------------------+-------------------+
| root             | %                 |
| root             | 127.0.0.1         |
| amavisd          | localhost         |
| debian-sys-maint | localhost         |
| iredadmin        | localhost         |
| iredapd          | localhost         |
| mysql.sys        | localhost         |
| phpmyadmin       | localhost         |
| root             | localhost         |
| roundcube        | localhost         |
| vmail            | localhost         |
| vmailadmin       | localhost         |
| amavisd          | test4.folkmann.it |
| iredadmin        | test4.folkmann.it |
| iredapd          | test4.folkmann.it |
| roundcube        | test4.folkmann.it |
| vmail            | test4.folkmann.it |
| vmailadmin       | test4.folkmann.it |
+------------------+-------------------+

อย่างที่คุณเห็นรูทควรมีสิทธิ์เข้าถึง

เซิร์ฟเวอร์นั้นค่อนข้างง่ายเพราะฉันพยายามแก้ไขปัญหานี้มาระยะหนึ่งแล้ว

ใช้ Ubuntu 16.04.1 LTS พร้อม Apache, MySQL และ PHP เพื่อให้สามารถโฮสต์เว็บไซต์และ iRedMail 0.9.5-1 เพื่อให้สามารถโฮสต์อีเมลได้

เข้าสู่ระบบฐานข้อมูล MySQL ทำงานได้ดีก่อนที่ฉันจะติดตั้ง iRedMail ฉันพยายามแล้วเพียงแค่ติดตั้ง iRedMail แต่หลังจากนั้นรูทก็ไม่ทำงาน ...

หากมีใครสามารถบอกฉันได้ว่าฉันแก้ไขปัญหาการเข้าสู่ระบบ MySQL ของฉันหรือฉันจะติดตั้ง iRedMail บนติดตั้ง MySQL ที่มีอยู่ และใช่ฉันลองใช้คำแนะนำในการติดตั้งและไม่พบตัวแปรเหล่านั้นในไฟล์ปรับแต่ง


ฉันไปตามลิงก์นี้และตัวเลือกแรกทำงานให้ฉัน: askubuntu.com/questions/763336//
Mikael Arhelger

3
sudo mysql_secure_installationเป็นวิธีที่ง่ายที่สุดในการแก้ไขปัญหานี้
Sergey Ponomarev

คำตอบ:


1120

บางระบบเช่น Ubuntu, MySQL จะใช้เป็นค่าเริ่มต้นปลั๊กอิน auth_socket ยูนิกซ์

โดยทั่วไปหมายความว่า: db_users ใช้มันจะเป็น "auth" โดยcredentias ผู้ใช้ระบบ คุณสามารถดูว่าrootผู้ใช้ของคุณได้รับการตั้งค่าเช่นนี้หรือไม่โดยทำดังนี้

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

อย่างที่คุณเห็นในแบบสอบถามrootผู้ใช้กำลังใช้auth_socketปลั๊กอิน

มี 2 ​​วิธีในการแก้ปัญหานี้:

  1. คุณสามารถตั้งค่าผู้ใช้รูทให้ใช้mysql_native_passwordปลั๊กอินได้
  2. คุณสามารถสร้างใหม่db_userกับคุณsystem_user(แนะนำ)

ตัวเลือกที่ 1:

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

ตัวเลือกที่ 2: (แทนที่ YOUR_SYSTEM_USER ด้วยชื่อผู้ใช้ที่คุณมี)

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

จำไว้ว่าถ้าคุณใช้ตัวเลือก # 2 คุณจะต้องเชื่อมต่อกับ mysql เป็นชื่อผู้ใช้ระบบของคุณ ( mysql -u YOUR_SYSTEM_USER)

หมายเหตุ:ในบางระบบ (เช่น Debian stretch) ปลั๊กอิน'auth_socket'เรียกว่า'unix_socket'ดังนั้นคำสั่ง SQL ที่เกี่ยวข้องควรเป็น:UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

อัปเดต: จากความคิดเห็นของ @ andy ดูเหมือนว่า mysql 8.xx อัปเดต / แทนที่auth_socketสำหรับcaching_sha2_passwordฉันไม่มีการตั้งค่าระบบด้วย mysql 8.xx เพื่อทดสอบสิ่งนี้ แต่ขั้นตอนด้านบนจะช่วยให้คุณเข้าใจปัญหาได้ นี่คือคำตอบ:

การเปลี่ยนแปลงหนึ่งเดียวของ MySQL 8.0.4 คือปลั๊กอินการพิสูจน์ตัวตนเริ่มต้นใหม่คือ 'caching_sha2_password' ใหม่ 'YOUR_SYSTEM_USER' จะมีปลั๊กอินรับรองความถูกต้องนี้และคุณสามารถเข้าสู่ระบบจากเปลือก bash ตอนนี้ด้วย "mysql -u YOUR_SYSTEM_USER-p" และให้รหัสผ่านสำหรับผู้ใช้นี้ในการแจ้งให้ ไม่จำเป็นสำหรับขั้นตอน "ปลั๊กอินผู้ใช้ SET UPDATE" สำหรับการอัปเดตปลั๊กอิน auth เริ่มต้น 8.0.4 โปรดดูที่https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/


5
ตัวเลือก 1 ทำงานให้ฉัน sudo gedit /etc/phpmyadmin/config.inc.phpแต่แล้วผมยังต้องทำงาน จากนั้นฉันก็ทำการค้นหาAllowNoPasswordและไม่แสดงข้อคิดเห็นทั้งสองบรรทัดที่มีอยู่ จากนั้นฉันก็สามารถเข้าสู่ระบบในฐานะรูทโดยไม่มีรหัสผ่าน
โจ

7
ตัวเลือก 2 ทำงาน ฉันคิดว่ามันเป็นแนวปฏิบัติที่ดีที่สุดเสมอในการสร้างผู้ใช้ใหม่และใช้การรูทเพื่ออยู่ที่นั่น!
PasinduJay

2
IDENTIFIED BY ''บิตอาจจะIDENTIFIED BY 'YOUR_PASSWD'
YakovL

4
ในที่สุดคำตอบที่ใช้งานได้จริง !! มีคำตอบหนึ่งล้านล้านคำบอกว่าทำอะไรmysqld_safe --skip-grant-tablesฯลฯ และมันไม่ทำงาน
สจ๊วต

4
ตกลงวิธีการทำเช่นนี้ถ้าsudo mysql -u root -pไม่ให้ฉันเข้า?
Hrvoje T

173

ตรวจสอบที่นี่:

เวอร์ชั่นใหม่ของ MySQL ทำแบบนี้

ในตัวใหม่ my-sql ใหม่หากรหัสผ่านถูกปล่อยว่างขณะทำการติดตั้งจะขึ้นอยู่กับauth_socketปลั๊กอิน

วิธีที่ถูกต้องคือลงชื่อเข้าใช้ my-sql ด้วย sudoสิทธิ์

$ sudo mysql -u root -p

จากนั้นอัปเดตรหัสผ่านโดยใช้:

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

เมื่อเสร็จแล้ว stop and startเซิร์ฟเวอร์ mysql

$  sudo service mysql stop
$  sudo service mysql start

สำหรับรายละเอียดที่สมบูรณ์คุณสามารถอ้างถึง ลิงค์นี้

แสดงความคิดเห็นสำหรับข้อสงสัยใด ๆ


4
สิ่งนี้ใช้ได้กับฉันโดยใช้ Ubuntu 18. ขอบคุณมาก
Peter Drinnan

10
ทำงานได้ดีบน Ubuntu 18.04
sgtkuncoro

2
สิ่งที่ฉันกำลังมองหา ขอบคุณ :) ทำงานกับ Ubuntu 18
Manthan_Admane

2
มันใช้งานได้อย่างมีเสน่ห์, lubuntu 19.04
Kvvaradha

3
มันใช้งานได้ดี ลิงค์มีประโยชน์
kjohri

9

ฉันกำลังประสบปัญหานี้กับ Debian 8 VM ที่ฉันโต้ตอบผ่าน Putty บนเดสก์ท็อป Windows 10 ของฉัน

ฉันลองคำแนะนำต่าง ๆ ที่นี่ แต่ไม่มีอะไรทำงานได้ดีและฉันกำลังเรียกใช้ MariaDB บนโฮสต์ Debian ในท้ายที่สุดฉันพบว่าฉันไม่สามารถเริ่มเซิร์ฟเวอร์ db ในเซฟโหมด แต่ฉันไม่ต้องการและคำสั่งต่อไปนี้ใช้งานได้จริงสำหรับฉันนั่นคืออนุญาตให้ผู้ใช้ MySql ที่สร้างขึ้นใหม่เข้าสู่เซิร์ฟเวอร์ MySql / MariaDB:

sudo service mysql restart
sudo mysql # logs in automatically into MariaDB
use mysql;
update user set plugin='' where user='your_user_name';
flush privileges;
exit;
sudo service mysql restart # restarts the mysql service

หากข้างต้นไม่ได้ผลสำหรับคุณให้ทำตามขั้นตอนที่อธิบายไว้ในโพสต์ของ zetacu ด้านบน ( zetacu ) จากนั้นทำตามขั้นตอนของฉัน

ตอนนี้คุณควรจะสามารถใช้ไคลเอนต์ terminal ระยะไกลและเข้าสู่ mysql อย่างปลอดภัยโดยใช้คำสั่ง:

mysql -u your_user_name -p

* พิมพ์รหัสผ่านเมื่อได้รับแจ้ง


ง่าย ๆ ดีเพียงคำสั่งแรกไม่ได้รับอนุญาตให้ดำเนินการที่สองดังนั้นฉันจะปรับแก้ไข - โปรดดูว่าฉันขวา ...
kokbira

7

ฉันอยากจะแนะนำให้ลบการเชื่อมต่อ Mysql -

อัพเดท - สำหรับ Mysql เวอร์ชั่น 5.5 หากเวอร์ชั่นของคุณแตกต่างกันโปรดเปลี่ยนบรรทัดแรกตามลำดับ

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

และติดตั้งอีกครั้ง แต่คราวนี้ตั้งรหัสผ่านรูทด้วยตัวเอง สิ่งนี้จะประหยัดความพยายามได้มาก

sudo apt-get update
sudo apt-get install mysql-server

@ingernet อาจเป็นเพราะปัญหาอื่น ๆ ที่คุณละเลยขณะติดตั้งอีกครั้ง
Eminem347

@PJBrunet อาจเป็นสาเหตุให้รุ่น Mysql ของคุณแตกต่าง
Eminem347

ยุติธรรมเพียงพอ แต่โซลูชันอเนกประสงค์ดีที่สุด
PJ Brunet

6

หลังจากผ่านไปหลายชั่วโมงของการต่อสู้โดยไม่มีวิธีแก้ปัญหาที่นี่มันใช้งานได้สำหรับฉันแล้วฉันก็พบวิดีโอ youtube ที่มันบอกว่าคอลัมน์รหัสผ่านตอนนี้เรียกว่า authentication_string ดังนั้นฉันสามารถเปลี่ยนรหัสผ่านของฉันดังนี้: ก่อนเข้า mysql จาก terminal

sudo mysql

จากนั้นให้พิมพ์ mysql หลังจาก mysql>

mysql> use mysql
mysql> update user set authentication_string=PASSWORD("mypass") where user='root';
mysql> flush privileges;
mysql> quit;

ณ จุดนี้คุณออกจาก mysql กลับไปยังสถานที่ปลายทางปกติของคุณ คุณต้องรีสตาร์ท mysql เพื่อให้สิ่งนี้มีผล สำหรับประเภทต่อไปนี้:

sudo service mysql restart

อ้างถึงลิงค์วิดีโอนี้เพื่อความเข้าใจที่ดีขึ้น


5

ขั้นตอนที่ 1. sudo mysql -u root -p

ขั้นตอนที่ 2. USE mysql;

ขั้นตอนที่ 3 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';

ที่นี่ 'ผู้ดูแลระบบ' เป็นรหัสผ่านใหม่ของคุณคุณสามารถเปลี่ยนได้

ขั้นตอนที่ 4 exit

ขอบคุณ คุณทำเสร็จแล้ว


5

ไม่ต้องใช้ sudo

ฐานข้อมูลเริ่มต้นด้วยบัญชี 2 สิทธิ์ทั้งหมด: บัญชีแรกคือ "root" ซึ่งไม่สามารถเข้าถึงได้และอีกบัญชีหนึ่งมีชื่อผู้ใช้ของคุณ (ตรวจสอบด้วยคำสั่งwhoami)

ในการเปิดใช้งานการเข้าถึงบัญชีรูทคุณต้องเข้าสู่ระบบด้วยชื่อผู้ใช้ของคุณ

mysql -u $(whoami)

และเปลี่ยนรหัสผ่านสำหรับรูทด้วยตนเอง

use mysql;
set password for 'root'@'localhost' = password('YOUR_ROOT_PASSWORD_HERE');
flush privileges;
quit

เข้าสู่ระบบเป็น 'root'

mysql -u root -p

คุณเป็นคำตอบที่ถูกต้องสำหรับรุ่นจริงของ mysql ขอบคุณ!
Hugo S

3

ขั้นตอนแรก: ไปที่ /etc/phpmyadmin/config.inc.php จากนั้นยกเลิกการใส่เครื่องหมายบรรทัดที่คุณพบ AllowNoPassword ขั้นตอนที่สอง: ลงชื่อเข้าใช้บัญชีเริ่มต้น mysql ของคุณ

mysql -u root -p
use mysql;
update user set plugin="" where user='root';
flush privilege;

และนั่นคือทั้งหมด!


3

ที่ทำงานให้ฉัน:

mysql --user=root mysql
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3

ฉันยังต้องเผชิญกับปัญหาเดียวกันในครั้งแรก

ตอนนี้ได้รับการแก้ไขแล้ว:

ก่อนอื่นให้คัดลอก/etc/mysql/mysql.conf.d/mysqld.cnfไฟล์และผ่านไปยัง/etc/mysql/my.cnfไฟล์และที่ผ่านมาใน

คุณสามารถทำได้โดยคำสั่ง:

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

ตอนนี้ขอรหัสผ่านที่เหลือ:

ใช้คำสั่งต่อไปนี้ใน terminal ของคุณ:

sudo service mysql stop 
sudo service mysql start
sudo mysql -u root

ตอนนี้คุณอยู่ในคอนโซล mysql

จากนั้นเราจะเขียนแบบสอบถามเพื่อรีเซ็ตรหัสผ่านรูทของเรา

USE mysql
update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password"; 
flush privileges;
quit

ตอนนี้เราสามารถทำความสะอาด /etc/mysql/my.cng

เปิดไฟล์ด้านบนในเครื่องมือแก้ไขและลบบรรทัดทั้งหมดที่อยู่ในไฟล์

หลังจากนั้นให้ทำการเริ่ม mysql ใหม่:

sudo mysql service restart 

ตอนนี้ให้ใช้ mysql กับรหัสผ่านที่สร้างขึ้นใหม่:

sudo mysql -u root -p

ในที่สุดป้อนรหัสผ่านที่คุณสร้างขึ้นใหม่


1
ทำงานได้ดี! แต่คำตอบของคุณต้องได้รับการอัพเดต !! /etc/mysql/my.cnf และไม่ใช่ /etc/mysql/my.cng และสำหรับบริการรีสตาร์ท sudo บริการของ mysql เริ่มต้นใหม่
essayoub

3

ฉันพบวิธีแก้ปัญหาของฉันหลังจากชั่วโมงการวิจัยที่นี่

หยุด MySQL

sudo service mysql stop

สร้างไดเรกทอรีบริการ MySQL

sudo mkdir /var/run/mysqld

ให้สิทธิ์ผู้ใช้ MySQL ในการเขียนไปยังไดเรกทอรีบริการ

sudo chown mysql: /var/run/mysqld

เริ่ม MySQL ด้วยตนเองโดยไม่ตรวจสอบสิทธิ์หรือเชื่อมต่อเครือข่าย

sudo mysqld_safe --skip-grant-tables --skip-networking &

เข้าสู่ระบบโดยไม่มีรหัสผ่าน

 mysql -uroot mysql

อัปเดตรหัสผ่าน

UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='%';
EXIT;

ปิด MySQL

sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown

เริ่มบริการ MySQL ตามปกติ

sudo service mysql start

นี่ทำให้ฉันเป็น mysql เมื่อไม่มีอะไรจะทำ! ขอบคุณ!
UserX

2

คุณต้องการเข้าถึง MySQL ด้วยผู้ใช้รูท แต่คุณไม่ได้ให้รหัสผ่านที่ถูกต้องของรูท

หากคุณต้องการตั้งรหัสผ่านใหม่สำหรับรูทเว็บไซต์ของ MySQL มีเอกสารที่ยอดเยี่ยมเกี่ยวกับวิธีการทำ: http://dev.mysql.com/doc/refman/5.7/th/resetting-permissions.html

ฉันจะไม่แสดงในกระบวนการที่นี่เพราะMySQL เอกสารที่ลิงค์ข้างต้นก็เป็นที่ชัดเจนและรัดกุม


ขอบคุณสำหรับ anwser แต่ฉันไม่สามารถใช้งานได้ดังนั้นฉันเลือกที่จะติดตั้ง iRedMail ด้วยฐานข้อมูล pgSQL แทน
Folkmann

Roger Folkman! ดีใจที่ได้ทราบว่าคุณแก้ไขปัญหาของคุณได้อย่างไร
Cristian Gonçalves

ลิงค์แตก mysql.com มีลิงค์ที่ใช้งานไม่ได้ในช่วงหลายปีที่ผ่านมา คุณควรคัดลอกและวางข้อมูลที่เกี่ยวข้องที่นี่ซึ่งใช้ได้ตราบใดที่คุณระบุแหล่งที่มา
Goose

1

OS: Ubuntu18.04

MySQL: 5.7

  1. เพิ่มskip-grant-tablesไปยังจุดสิ้นสุดไฟล์ของ mysqld.cnf

  2. cp the my.cnf

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
  1. รีเซ็ตรหัสผ่าน
(base)   ~ sudo service mysql stop 
(base)   ~ sudo service mysql start
(base)   ~ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, 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> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed, 3 warnings
mysql> update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> update user set plugin="mysql_native_password"; 
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4  Changed: 0  Warnings: 0

mysql>  flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
  1. ลบออกskip-grant-tablesจาก my.cnf
(base)   ~ sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf 
(base)   ~ sudo emacs /etc/mysql/my.cnf                 
(base)   ~ sudo service mysql restart
  1. เปิด mysql
(base)   ~ mysql -uroot -ppassword 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, 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> 
  1. ตรวจสอบนโยบายรหัสผ่าน
mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.00 sec)


mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
6 rows in set (0.08 sec)!
  1. เปลี่ยนการตั้งค่าของ validate_password
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)

mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

ทราบ ว่าคุณควรรู้ว่าคุณผิดพลาดเกิดจากอะไร validate_password_policy?

คุณควรตัดสินใจรีเซ็ตรหัสผ่านเพื่อเติมนโยบายหรือเปลี่ยนนโยบาย


0

เรื่องนี้เกิดขึ้นกับฉันเช่นกัน ปัญหาคือกับ repo mysql ที่มาพร้อมกับลินุกซ์ distro ดังนั้นเมื่อคุณทำเช่น $ sudo apt install mysql-server นั้นมันจะติดตั้ง mysql จาก repo เริ่มต้นซึ่งจะทำให้เกิดปัญหานี้ ดังนั้นเพื่อเอาชนะว่าคุณต้องถอนการติดตั้ง mysql ที่ติดตั้ง $ sudo apt remove mysql* --purge --auto-remove

จากนั้นดาวน์โหลด mysql repo จากเว็บไซต์ทางการของ mysql MySQL APT Repo ทำตามเอกสารของพวกเขาเกี่ยวกับวิธีเพิ่ม repo และติดตั้ง มันไม่มีปัญหา เช่นเดียวกับที่ตอบโดย @zetacu คุณสามารถตรวจสอบได้ว่าตอนนี้รูท mysql ใช้ปลั๊กอิน mysql_native_password อย่างแน่นอน


0

ในกรณีของฉัน

dev@Dev-007:~$ mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

ฉันแน่ใจว่ารหัสผ่านของฉันถูกต้องมิฉะนั้นรหัสข้อผิดพลาดจะเป็น ERROR 1045 (28000): Access denied for user

ดังนั้นฉันจึงใช้ sudo อีกครั้ง

dev@Dev-007:~$ sudo mysql -u root -p

คราวนี้มันใช้ได้สำหรับฉัน ดูเอกสาร

แล้วเปลี่ยนรหัสผ่านรูท

mysql> alter user 'root'@'%' identified with mysql_native_password by 'me123';
Query OK, 0 rows affected (0.14 sec)

mysql> 

จากนั้นรีสตาร์ทเซิร์ฟเวอร์โดยใช้ sudo /etc/init.d/mysql restart

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.