ไม่สามารถเชื่อมต่อผ่าน MySQL Workbench ไปยัง localhost ใน Ubuntu 16.04 (รหัสผ่านไม่ต้องรูท)


17

ดูเหมือนว่าเว็บไซต์ของ Oracle จะบอกเป็นนัยว่าใช้งานได้เฉพาะบน 15 และ 14 เท่านั้น http://dev.mysql.com/downloads/workbench/

เครื่อง Ubuntu 16.04 สองเครื่องของฉันดูเหมือนจะไม่สามารถเชื่อมต่อได้ (การเข้าถึงถูกปฏิเสธข้อผิดพลาดสำหรับรูท)

ภาพ

มันติดตั้งไม่เป็นไร มันเปิดได้แล้ว แต่มันจะไม่เชื่อมต่อกับ localhost

ใครมีโชคบ้าง


คุณสร้างมันจากแหล่งที่มาหรือไม่? เกิดข้อผิดพลาดอะไรกันแน่? คล้ายกับเมื่อคุณระบุรหัสผ่านไม่ถูกต้องหรือไม่

ใช่มันคล้ายกัน แต่ root ไม่มีรหัสผ่าน และฉันสามารถเชื่อมต่อกับรูทบนบรรทัดคำสั่งได้อย่างถูกต้อง และฉันตรวจสอบ priveleges ทั้งหมดแล้ววิ่งอีกFLUSH PRIVILEGES; ครั้ง ณ จุดนี้ฉันอยากรู้ว่าใครสามารถเชื่อมต่อ localhost ตั้งแต่วันที่ 16 เนื่องจากไซต์ Oracle ระบุอย่างชัดเจนว่า 14 และ 15 เท่านั้น
Jonathan

ฉันไม่เห็นว่า Oracle อ้างสิทธิ์มันใช้งานไม่ได้ฉันไม่เห็นไบนารีของ Xenial แต่ฉันจะดู MySQL ที่ปรับแต่งที่นี่packages.ubuntu.com/xenial/mysql-workbench ข้อผิดพลาดนั้นดูเหมือนจะไม่เป็นข้อผิดพลาดความเข้ากันได้ของซอฟต์แวร์ เปิดการบันทึกบน mysql และเพิ่มระดับการบันทึกเป็น 2 และดูว่าบันทึกแสดงคำขอของคุณหรือไม่

@ bc2946088 mysql-workbenchอยู่ในที่เก็บจักรวาลสำหรับลิงก์
Videonauth

คุณตรวจสอบตัวเลือกใด ๆ จาก 4 ตัวเลือกหรือไม่ ;-) WB ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน (ด้วย 5.7 btw) พิสูจน์ด้านล่าง
Rinzwind

คำตอบ:


29

ปัญหาน่าจะเกิดขึ้นเนื่องจากการเปิดใช้งานการรับรองความถูกต้องของซ็อกเก็ตสำหรับผู้ใช้รูทโดยค่าเริ่มต้นเมื่อไม่มีการตั้งรหัสผ่านในระหว่างการอัพเกรดเป็น 16.04 คำเตือนที่สำคัญนี้มีการบันทึกไว้ในบันทึกประจำรุ่น 16.04 :

พฤติกรรมรหัสผ่านเมื่อรหัสผ่าน root ของ MySQL ว่างเปล่ามีการเปลี่ยนแปลง บรรจุภัณฑ์เปิดใช้งานการรับรองความถูกต้องของซ็อกเก็ตเมื่อรหัสผ่านรูทของ MySQL ว่างเปล่า หมายความว่าผู้ใช้ที่ไม่ใช่รูทไม่สามารถล็อกอินในฐานะผู้ใช้รูท MySQL ด้วยรหัสผ่านที่ว่างเปล่า

ไม่ว่าจะด้วยเหตุผลใดก็ตาม MySQL Workbench ที่มาพร้อมกับ 16.04 ไม่ได้ทำงานนอกกรอบกับเซิร์ฟเวอร์ MySQL อย่างน้อยก็สำหรับฉัน ฉันลองใช้ "Local Socket / Pipe" เพื่อเชื่อมต่อในหลายวิธี แต่ก็ไม่มีประโยชน์

วิธีแก้ไขคือเปลี่ยนกลับเป็นการตรวจสอบรหัสผ่านดั้งเดิม คุณสามารถทำได้โดยเข้าสู่ MySQL โดยใช้การรับรองความถูกต้องซ็อกเก็ตโดยทำ:

sudo mysql -u root

เมื่อเข้าสู่ระบบ:

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

ซึ่งจะเปลี่ยนกลับไปใช้การตรวจสอบรหัสผ่านดั้งเดิม (ค่าเริ่มต้นเก่า) หากคุณได้ลองวิธีอื่นเพื่อแก้ไขปัญหาคุณจะต้องตรวจสอบให้แน่ใจว่าฟิลด์ "ปลั๊กอิน" ใน mysql.user ถูกตั้งค่าเป็น "auth_token" ซึ่งอาจต้องใช้ mysqld_safe เพื่อลงชื่อเข้าใช้ MySQL ในกรณีที่คุณ ฉันกำลังยุ่งอยู่กับสิ่งต่าง ๆ อย่างที่ฉันเคยทำ

ขอมอบเครดิตให้กับโพสต์บล็อกของ Miguel Nietoสำหรับโซลูชันนี้


น่าอัศจรรย์ฉันไม่เคยรู้เรื่องนี้เลย
Jonathan

สิ่งนี้แก้ไขได้ แต่ครั้งต่อไปที่ฉันเรียกใช้งานการอัปเดตจะทำให้มันพังอีก
Jonathan

ผลลัพธ์ของการอัพเดต apt คืออะไร
Mike M

ฉันไม่เห็นมันเพราะฉันไม่ได้สังเกตจนกระทั่งครั้งต่อไปที่ฉันเรียกใช้ mysql ในภายหลัง
Jonathan

ฉันสงสัยว่านี่เป็นอูบุนตู 16.04 หรือ mysql 5.7 หรือไม่ (คือ Oracle หรือ Canonical ที่ทำการเปลี่ยนแปลงนี้หรือไม่)
Jonathan

23

MySQL 5.7 ขึ้นไปไม่รองรับการเชื่อมต่อในฐานะ "รูท" mysql-workbenchดังนั้นคุณต้องสร้างผู้ใช้ปกติและเชื่อมต่อผ่านทางนั้น

sudo mysql -u root -p

สร้างผู้ใช้ชื่อ "ผู้ดูแลระบบ" mysql-workbenchและการใช้งานที่สามารถเชื่อมต่อใน

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

คำตอบนี้เหมาะสำหรับฉันขอบคุณ Jonathan
Chris Evans

2
สิ่งนี้ใช้ได้กับ Ubuntu 18.04
tadeubarbosa

สมบูรณ์ ขอบคุณ (18.04.2)
Ron Nuni

4

คำถามนี้อาจมีอายุสองปี แต่งานของฉันกับ mysql-workbench คืนนี้ดูเหมือนจะให้คำตอบกับฉัน

ผู้ใช้รูทตอนนี้ผู้ใช้รับรองความถูกต้อง auth_socket โดยค่าเริ่มต้น วิธีเดียวที่รูทสามารถเข้าถึงได้คือการล็อกอินในฐานะรูท

ฉันพบสิ่งนี้โดยการรัน mysql -u rootทั้งในฐานะผู้ใช้รูทและผู้ใช้มาตรฐาน

มันจะไม่ทำงานภายใต้ผู้ใช้มาตรฐาน

ดังนั้นคำถามต่อไปของฉันคือสิ่งที่ผู้ใช้ทำ mysql-workbench ทำงาน ปรากฎว่ามันทำงานเป็นผู้ใช้มาตรฐานโดยค่าเริ่มต้น หากต้องการให้มันรันในฐานะผู้ใช้รูทจะต้องรันจากรูท ดังนั้นฉันจึงเข้าสู่ผู้ใช้รูท CLI และพิมพ์ 'mysql-workbench'

ฉันต้องเข้าไปตั้งค่าสำหรับผู้ใช้รูทดังที่แสดงไว้ที่นี่ ตำแหน่งไฟล์นั้นถูกต้องสำหรับการติดตั้ง Ubuntu 18.04

การตั้งค่าการเชื่อมต่อรูท mysql-workbench

หากตำแหน่งซ็อกเก็ตนั้นไม่ถูกต้องคุณจะต้องไปที่ mysql CLI จากรูทหรือ sudo แล้วรันคำสั่งต่อไปนี้

คำสั่ง MySQL CLI เพื่อค้นหาซ็อกเก็ต

หลังจากคุณตั้งค่าที่ถูกต้องทดสอบการเชื่อมต่อ มันควรจะประสบความสำเร็จและคุณพร้อมที่จะไป


ขอบคุณสำหรับสิ่งนี้! ฉันไม่ควรที่จะยกเลิกการเปลี่ยนแปลงที่เกี่ยวข้องกับความปลอดภัยเพื่อรับรองความถูกต้องเพื่อสนับสนุนเครื่องมือรุ่นเก่าเมื่อฉันสามารถบอกเครื่องมือนั้นให้เชื่อมต่อโดยใช้วิธีที่ใหม่กว่า
แอรอน

ฉันจะเชื่อมต่อท้องถิ่นผ่านทางนี้ได้หรือไม่? ฉันไม่เข้าใจว่าทำไมเราไม่สามารถเชื่อมต่อผ่าน TCP / IP ได้
john gonidelis

2

ทำงานได้ดีสำหรับฉันและฉันไม่ได้ทำอะไรเป็นพิเศษ ติดตั้งmysql-server-5.7และปรับแต่งทั้งจากบรรทัดคำสั่งและตั้งค่าผู้ใช้ด้วยรหัสผ่านและตั้งค่าการอนุญาตฐานข้อมูลปกติ (เช่นเดียวกับวิธีปกติ)

ป้อนคำอธิบายรูปภาพที่นี่

และด้วยฐานข้อมูลและตาราง:

ป้อนคำอธิบายรูปภาพที่นี่


น่าสนใจ รักการอ้างอิง discworld เมื่อฉันกำหนดค่าแพ็คเกจ mysql ใหม่ฉันไม่ได้รับพรอมต์ให้เปลี่ยนรหัสผ่าน คุณ ฉันกำลังคิดว่าฉันมีการติดตั้งที่เสียหายหรือมีข้อขัดแย้ง ฉันคิดว่าฉันควรได้รับการแจ้งให้เปลี่ยนรหัสผ่านรูต
Jonathan

1

สร้างบัญชีผู้ใช้ด้วยสิทธิ์ระดับผู้ดูแลที่เหมาะสมซึ่งสามารถเชื่อมต่อผ่าน mysql workbench โดยใช้ปลั๊กอิน auth_socket โปรดทราบว่านี้ไม่ได้ผลสำหรับการเชื่อมต่อเซิร์ฟเวอร์ในระดับรากของ MySQL

เข้าสู่ระบบ mysql จากเทอร์มินัลเซสชัน:

$sudo mysql

หากคุณสามารถทำได้ปลั๊กอิน auth_socket จะถูกเปิดใช้งานและบัญชีรูทจะตรวจสอบสิทธิ์โดยใช้ปลั๊กอินนี้ โปรดทราบว่านี่เป็นการตั้งค่าเริ่มต้นเมื่อติดตั้ง mysql บน Ubuntu หลังจากรันสคริปต์การติดตั้งที่ปลอดภัย

ขั้นแรกให้สร้างผู้ใช้ mysql สำหรับ 'valerie' บัญชีของคุณ:

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

เปิดใช้งานสิทธิ์ของผู้ดูแลระบบสำหรับบัญชี:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

ออกจากเปลือก:

mysql> exit

จากนั้นใน mysql workbench:

  1. สร้างการเชื่อมต่อใหม่
  2. เลือกวิธีการเชื่อมต่อเป็น Local Socket / Pipe
  3. ตั้งค่า Socket / Pipe Path เป็น: /var/run/mysqld/mysqld.sock (โปรดทราบว่านี่เป็นเส้นทางสำหรับระบบ Debian / Ubuntu และการเปลี่ยนแปลงสำหรับ Linux อื่น ๆ )
  4. ตั้งชื่อผู้ใช้ ('valerie' ในตัวอย่างนี้)

คุณควรจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ mysql ด้วยการเชื่อมต่อนี้


0

ลองนี้

เลือกฐานข้อมูล MySQL

1: ใช้ mysql;

2: ผู้ใช้ UPDATE ชุดปลั๊กอิน = 'mysql_native_password' โดยที่ User = 'root';

3: สิทธิ์ล้าง;

4: ทางออก;

~ $ sudo บริการ mysql รีสตาร์ท


0

เซิร์ฟเวอร์ MySQL บนโฮสต์ AWS ที่ใช้งาน Ubuntu 16.04; mysql-workbench บนแล็ปท็อป Ubuntu 16.04; ใช้การเชื่อมต่อ KeyPair

หลังจากตั้งค่าการเชื่อมต่อ Test db กำลังทำงาน แต่การเชื่อมต่อจริงล้มเหลวเสมอโดยมีข้อความเหมือนที่โพสต์โดยผู้นำ Jonathan ตรวจสอบบันทึก~/.mysql/workbench/logและพบข้อความ"สิทธิ์ถูกปฏิเสธ"ไม่กี่รายการ

ตอนนี้ฉันสามารถใช้ mysql-workbench ทำงานร่วมกับ: sudo mysql-workbench

และต่อมาฉันสามารถไปและchmodไดเรกทอรีที่ต้องการการอนุญาต


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