เข้าถึงเซิร์ฟเวอร์ MySQL ผ่าน VirtualBox


20

ฉันพยายามรับเซิร์ฟเวอร์ MySQL (ซึ่งอยู่ใน VM) เพื่อตอบสนองต่อลูกค้า (ซึ่งอยู่บนเครื่องโฮสต์) วิธีการทั้งหมดกลับมาเหมือนกัน:

Host '10.0.2.2' is not allowed to connect to this MySQL server

ฉันมั่นใจพอร์ตที่เหมาะสมไปข้างหน้า ฉันยังมั่นใจว่าในmy.cnfสายของฉัน:

skip-external-locking
bind-address = 0.0.0.0

สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันยังพยายามที่จะเล่นนิดหน่อยเช่น:

bind-address = 10.0.2.2

แต่นี่ก็ไม่ได้ผลสำหรับฉัน - เซิร์ฟเวอร์ไม่สามารถเริ่มได้

ความคิดใดที่ฉันผิด

UPDATE ฉันไม่ได้ตรวจสอบสิทธิ์พิเศษroot@%เหมือนในฉันจะเปลี่ยนสิทธิ์สำหรับผู้ใช้ MySQL ที่สร้างไปแล้วได้อย่างไร

แก้ไข


คุณสร้างบัญชีผู้ใช้ใดใน MySQL?
Shane Madden

Accout root:rootของฉันคือ ฉันสงสัยว่าปัญหาอยู่ในการเข้าสู่ระบบมิฉะนั้นข้อความแสดงข้อผิดพลาดจะระบุบางAccess denied for root@10.0.2.2สิ่งบางอย่างที่ไม่ดี
defance

@ShaneMadden ขออภัย คุณพูดถูก สิ่งที่อยู่ใน privilegies root@%สำหรับ สวยความผิดของฉัน
defance

คำตอบ:


37

localhost ของบัญชีรูทเฉพาะในการติดตั้งเริ่มต้นส่วนใหญ่คุณแน่ใจหรือไม่ว่าคุณได้อนุญาตให้ล็อกอินจากระบบอื่น? จากคู่มืออ้างอิง MySQL :

หมายความว่าไม่มีแถวในตารางผู้ใช้ที่มีค่าโฮสต์ที่ตรงกับโฮสต์ไคลเอ็นต์

ดังนั้นไม่มี%หรือ10.0.2.2ในHostคอลัมน์เลย ตรวจสอบการกำหนดค่าปัจจุบันของคุณ:

select user,host from mysql.user where user='root';

คุณอาจต้องการสร้างรายการรูทใหม่ด้วยรหัสผ่านเดียวกับที่คุณมีในขณะนี้

create user 'root'@'10.0.2.2' identified by 'yourpassword';
grant all privileges on *.* to 'root'@'10.0.2.2' with grant option;
flush privileges;

1
อ๋อ ขอขอบคุณ. ฉันยังแก้ไขได้เมื่อไม่นานมานี้ตามที่คุณระบุไว้ที่นี่ นั่นเป็นปัญหาของฉันแน่นอน
defance

1
คำตอบของ Shane นั้นถูกต้องและสามารถเรียกใช้ในคำสั่งเดียวมีประโยชน์หากคุณกำลังใช้สคริปต์mysql -e "create user 'root'@'10.0.2.2' identified by 'yourpassword'; grant all privileges on *.* to 'root'@'10.0.2.2' with grant option; flush privileges;"
Ansible
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.