Làm thế nào để kết nối và tạo cơ sở dữ liệu trong MySQL?


17

Tôi muốn cài đặt MySQL và tạo cơ sở dữ liệu trên nó bằng đoạn mã sau:

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

Tôi nhận được thông báo sau khi thực hiện dòng thứ hai:

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

Vấn đề là gì?


1
Nếu bạn thực sự đã sử dụng 2 lệnh này, bạn đã CẤP RIÊNG TƯ cho {tên người dùng} (nếu không phải là quản trị viên / root) để có thể truy cập cơ sở dữ liệu?
Rinzwind

Câu trả lời:


26

Sau khi bạn đã cài đặt MySQL, bạn cần đặt mật khẩu gốc mysql . Làm như vậy:

  1. Nhập lệnh tiếp theo trong một thiết bị đầu cuối:

    mysql -u root

  2. Bây giờ nó sẽ mở giao diện điều khiển mysql . Và gõ dòng sau:

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

Để thoát khỏi bảng điều khiển mysql, hãy nhập exit.

Bây giờ bạn nên tạo cơ sở dữ liệu với người dùng root . Làm như vậy:

  1. Mở mysql từ thiết bị đầu cuối:

    mysql -u root -p

  2. Nhập mật khẩu đã tạo trước đó.

  3. Nhập dòng sau:

    CREATE DATABASE yourdatabasename;

Nếu bạn nhập SHOW DATABASES;bạn sẽ thấy nó trong danh sách. Nếu vậy, bạn có một cơ sở dữ liệu sẵn sàng để sử dụng!


mysql -u rootcho tôiERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Nicolas Raoul

Lỗi đó có nghĩa là bạn đã có rootngười dùng và nó có mật khẩu. Nếu bạn quên rootmật khẩu, hãy đọc tài liệu MySQL .
Lucio

1

Bạn cần kết nối với MySQL bằng cách sử dụng người dùng root và mật khẩu liên quan. Nếu bạn cần đặt chúng, hãy sử dụng lệnh sau:sudo mysqladmin -u root -h localhost password 'mypassword'

Từ đó, bạn có thể định cấu hình các tài khoản bổ sung bằng cách làm theo tài liệu này: Cách tạo người dùng mới và cấp quyền trong MySQL


1
Tôi đã sao chép sudo mysqladmin -u root -h localhost password 'mypassword'và dán nó vào thiết bị đầu cuối của mình và tôi nhận được tin nhắn Access denied for user 'root'@'localhost' (using password: NO).
dùng543361

@Bert Mã này sẽ không hoạt động. Các password 'mypassword'là sai, nó phải là-password 'mypassword'
Lucio

một cái gì đó nên được thay thế bằng 'mypassword'?
dùng543361

Tôi đã thực hiện sudo mysqladmin -u root -h localhost -password 'mypassword', nhưng tôi nhận được Access denied for user 'root'@'localhost' (using password: YES).
dùng543361

@ user543361 Điều gì xảy ra nếu bạn nhập mysql -u root?
Lucio

1

Điều này thật lạ vì kể từ ngày 12.04 (đoán bạn đang chạy Kubfox 12.04), MySQL đã được mặc định. Có vẻ như bạn đang thiếu một vài bước ở giữa, vì vậy hãy xem qua điều này:

Đầu tiên, như bạn đã đề cập, hãy thực hiện cài đặt,

sudo apt-get install mysql-server

Sau khi bạn cài đặt nó, hãy thử kiểm tra một chút,

sudo netstat -tap | grep mysql

Khi bạn chạy nó, bạn sẽ thấy câu trả lời này,

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

Nếu điều này không chạy đúng, hãy chạy lệnh khởi động lại này,

sudo service mysql restart

Bây giờ để cấu hình máy chủ.

Chúng ta hãy đi /etc/mysql/my.cnfđể cấu hình các cài đặt cơ bản. Điều này bao gồm Tệp nhật ký, Số cổng, v.v. Ví dụ: để định cấu hình MySQL để lắng nghe các kết nối từ máy chủ mạng, thay đổi chỉ thị địa chỉ liên kết thành địa chỉ IP của máy chủ:

bind-address            = 192.168.0.5

Sau đó, khởi động lại daemon MySQL,

sudo service mysql restart

Nếu bạn muốn thay đổi mật khẩu root của MySQL, hãy chạy nó:

sudo dpkg-reconfigure mysql-server-5.5

Trình nền sẽ bị dừng và bạn sẽ được nhắc nhập mật khẩu mới.

Khi bạn đã hoàn tất, bạn sẽ được định cấu hình và một vài tìm kiếm google sẽ hướng dẫn bạn cách tạo cơ sở dữ liệu

Nguồn: Hướng dẫn máy chủ Ubuntu


0

Chạy lệnh này:

sudo dpkg-reconfigure mysql-server-5.5

(5.5 là số phiên bản, điều chỉnh nếu bạn có phiên bản khác)

Điều này sẽ cho phép bạn đặt mật khẩu gốc MySQL, sau đó bạn có thể sử dụng mysqladminmysqlcác lệnh.


-1

Sau khi bạn đã cài đặt MySQL, bạn cần đặt mật khẩu gốc mysql. Làm như vậy:

Enter the next command in a terminal:

mysql -u root -p

Enter Password: (Enter your password here).

Điều này không đóng góp bất cứ điều gì chưa được nói trong câu trả lời được chấp nhận.
guntbert

-1

Tôi biết điều này đã 3 tuổi nhưng tôi cũng gặp vấn đề này và muốn đăng câu trả lời của mình trong trường hợp bất kỳ ai khác thực hiện cùng một tìm kiếm tôi đã làm.

mysqladmin: connect to server at 'localhost' failed

Điều này cho thấy rằng người dùng của bạn không có quyền kết nối với cơ sở dữ liệu trước khi đăng nhập; không phải người dùng cơ sở dữ liệu, người dùng linux thực tế của bạn. Chạy mọi thứ như siêu người dùng: sudo mysql -u root -p

Chỉ root (người dùng linux hoặc người dùng có quyền sudo) mới có thể đăng nhập vào mysql với quyền root (người dùng cơ sở dữ liệu). Tôi đã không thể tìm thấy bất cứ nơi nào ghi lại điều này nhưng thử nghiệm đã chứng minh đó là trường hợp. Bạn có thể tạo một người dùng mới với tất cả các quyền giống như người dùng root và điều đó sẽ không bị hạn chế.

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;

Bây giờ "newuser" (hoặc bất kỳ tên nào bạn chọn) có thể được đăng nhập - như không cần sudo và bạn có thể sử dụng nó cho tất cả các nhu cầu quản trị cơ sở dữ liệu của mình.


1
Sử dụng từ này probablytrong một câu trả lời ở đây là nhăn mặt.
WinEunuuchs2Unix

Chà, tôi chắc chắn không thể nói rằng nó không có thử nghiệm, bây giờ tôi có thể không?
WizardStan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.