จะเชื่อมต่อและสร้างฐานข้อมูลใน MySQL ได้อย่างไร?


17

ฉันต้องการติดตั้ง MySQL และสร้างฐานข้อมูลโดยใช้รหัสต่อไปนี้:

sudo apt-get install mysql-server
mysqladmin -h localhost -u {username} -p create lrs

ฉันได้รับข้อความต่อไปนี้หลังจากรันบรรทัดที่สอง:

    Enter password:
    mysqladmin: connect to server at 'localhost' failed
    error: 'Access denied for user '{username}'@'localhost' (using password: YES)'

อะไรคือปัญหา?


1
หากคุณใช้ 2 คำสั่งเหล่านี้จริง ๆ แล้วคุณให้สิทธิ์ส่วนบุคคลสำหรับ {ชื่อผู้ใช้} (หากไม่ใช่ผู้ดูแลระบบ / รูท) เพื่อให้สามารถเข้าถึงฐานข้อมูลได้หรือไม่
Rinzwind

คำตอบ:


26

หลังจากที่คุณได้ติดตั้ง MySQL, คุณจำเป็นต้องรหัสผ่าน root MySQL ชุด โดยทำดังนี้

  1. ป้อนคำสั่งถัดไปในเทอร์มินัล:

    mysql -u root

  2. ตอนนี้มันควรจะเปิดคอนโซลmysql และพิมพ์บรรทัดต่อไปนี้:

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');

เพื่อออกจากMySQLexitคอนโซลใส่

ตอนนี้คุณควรสร้างฐานข้อมูลด้วยผู้ใช้รูท โดยทำดังนี้

  1. เปิดmysqlจากเทอร์มินัล:

    mysql -u root -p

  2. ป้อนรหัสผ่านที่สร้างไว้ก่อนหน้า

  3. ป้อนบรรทัดต่อไปนี้:

    CREATE DATABASE yourdatabasename;

หากคุณป้อนSHOW DATABASES;คุณควรเห็นมันในรายการ ถ้าเป็นเช่นนั้นคุณมีฐานข้อมูลพร้อมใช้งาน!


mysql -u rootให้ฉันERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
นิโคลัสราอูล

ข้อผิดพลาดนั้นหมายความว่าคุณมีrootผู้ใช้อยู่แล้วและมีรหัสผ่าน หากคุณลืมrootรหัสผ่านอ่านเอกสารข้อมูล MySQL
Lucio

1

คุณต้องเชื่อมต่อกับ MySQL โดยใช้ผู้ใช้รูทและรหัสผ่านที่เกี่ยวข้อง หากคุณต้องการตั้งค่าใช้คำสั่งต่อไปนี้:sudo mysqladmin -u root -h localhost password 'mypassword'

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


1
ผมคัดลอกและวางมันลงไปในขั้วของฉันและฉันได้รับข้อความsudo mysqladmin -u root -h localhost password 'mypassword' Access denied for user 'root'@'localhost' (using password: NO)
user543489

@Bert รหัสนี้จะไม่ทำงาน password 'mypassword'เป็นธรรมมันควรจะเป็น-password 'mypassword'
Lucio

ควรแทนที่บางสิ่งด้วย 'mypassword' หรือไม่
user543489

ผมดำเนินการแต่ฉันได้รับsudo mysqladmin -u root -h localhost -password 'mypassword' Access denied for user 'root'@'localhost' (using password: YES)
user543489

@ user543489 จะเกิดอะไรขึ้นถ้าคุณใส่mysql -u root?
Lucio

1

นี่เป็นเรื่องแปลกเพราะตั้งแต่ 12.04 (คาดเดาว่าคุณกำลังใช้ Kubuntu 12.04), MySQL เป็นค่าเริ่มต้น ดูเหมือนว่าคุณกำลังพลาดขั้นตอนไปดังนั้นลองมาดูกัน:

ก่อนอื่นดังที่คุณได้กล่าวมาลองทำการติดตั้ง

sudo apt-get install mysql-server

หลังจากที่คุณติดตั้งแล้วลองทดสอบกันหน่อย

sudo netstat -tap | grep mysql

เมื่อคุณเรียกใช้คุณควรเห็นคำตอบนี้

tcp        0      0 localhost:mysql         *:*                LISTEN      2556/mysqld

หากนี่ทำงานไม่ถูกต้องให้รันคำสั่งรีสตาร์ทนี้

sudo service mysql restart

ตอนนี้เพื่อกำหนดค่าเซิร์ฟเวอร์

ไปที่/etc/mysql/my.cnfการตั้งค่าพื้นฐาน ซึ่งรวมถึง Log File, หมายเลขพอร์ต, ฯลฯ ตัวอย่างเช่นหากต้องการกำหนดค่า MySQL ให้รับฟังการเชื่อมต่อจากโฮสต์เครือข่ายให้เปลี่ยนคำสั่งbind-address directive เป็นที่อยู่ IP ของเซิร์ฟเวอร์:

bind-address            = 192.168.0.5

หลังจากนี้ให้รีสตาร์ท MySQL daemon

sudo service mysql restart

หากคุณต้องการเปลี่ยนรหัสผ่านรูทของ MySQL ให้รันสิ่งนี้:

sudo dpkg-reconfigure mysql-server-5.5

daemon จะหยุดและคุณจะได้รับพร้อมท์ให้ใส่รหัสผ่านใหม่

เมื่อคุณทำเสร็จแล้วคุณควรกำหนดค่าและการค้นหาของ google จะสอนวิธีการสร้างฐานข้อมูล

ที่มา: คู่มือ Ubuntu Server


0

เรียกใช้คำสั่งนี้:

sudo dpkg-reconfigure mysql-server-5.5

(5.5 คือหมายเลขเวอร์ชั่นปรับตัวถ้าคุณมีเวอร์ชั่นอื่น)

สิ่งนี้จะอนุญาตให้คุณตั้งรหัสผ่านรูทของ MySQL ซึ่งคุณสามารถใช้กับmysqladminและmysqlคำสั่งได้


-1

หลังจากที่คุณติดตั้ง MySQL คุณจะต้องตั้งค่ารหัสผ่าน root ของ mysql โดยทำดังนี้

Enter the next command in a terminal:

mysql -u root -p

Enter Password: (Enter your password here).

สิ่งนี้ไม่ได้ช่วยอะไรที่ไม่ได้กล่าวไปแล้วในคำตอบที่ยอมรับ
guntbert

-1

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

mysqladmin: connect to server at 'localhost' failed

สิ่งนี้บ่งชี้ว่าผู้ใช้ของคุณไม่ได้รับอนุญาตให้เชื่อมต่อกับฐานข้อมูลเองก่อนที่จะเข้าสู่ระบบ ไม่ใช่ผู้ใช้ฐานข้อมูลผู้ใช้ linux ที่แท้จริงของคุณ เรียกใช้ทุกอย่างในฐานะผู้ใช้ขั้นสูง: sudo mysql -u root -p

เฉพาะ root (ผู้ใช้ linux หรือผู้ใช้ที่มีสิทธิ์ sudo) เท่านั้นที่สามารถเข้าสู่ mysql ในฐานะ root (ผู้ใช้ฐานข้อมูล) ฉันไม่สามารถค้นหาเอกสารนี้ได้ทุกที่ แต่การทดลองพิสูจน์ว่าเป็นจริง คุณสามารถสร้างผู้ใช้ใหม่ที่มีสิทธิ์แบบเดียวกับผู้ใช้รูทและจะไม่ถูก จำกัด

sudo mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

ตอนนี้ "newuser" (หรือชื่ออะไรก็ได้ที่คุณเลือก) สามารถล็อกอินได้โดยไม่จำเป็นต้องใช้ sudo และคุณสามารถใช้มันสำหรับความต้องการในการดูแลฐานข้อมูลทั้งหมดของคุณ


1
การใช้คำprobablyในคำตอบที่นี่เป็นที่ขมวดคิ้ว
WinEunuuchs2Unix

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