LRI 1044 (42000): Truy cập bị từ chối cho người dùng '' @ 'localhost' vào cơ sở dữ liệu 'db'


164

Tôi muốn bắt đầu viết truy vấn trong MySQL.

show grants trình diễn:

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

Tôi không có id người dùng nhưng khi tôi muốn tạo người dùng, tôi không có quyền riêng tư, tôi cũng không biết cách tạo đặc quyền khi thậm chí tôi không có một người dùng!

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'parsa';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER pr
ivilege(s) for this operation

Tôi đã cố gắng đăng nhập bằng root:

mysql> mysql -u root -p;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p' at line 1
mysql> mysql -u root -p root;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p root' at line 1

3
Bạn cần đăng nhập như một người dùng có quyền. Ít nhất rootnên được tạo khi bạn cài đặt MySQL.
derobert

Trong quá trình cài đặt, nó bảo tôi đặt mật khẩu và tôi đặt nó vào root bây giờ tôi có thể làm gì?
Nickool

9
Bạn cần đăng nhập với quyền root, ví dụ, bằng cách chạy mysql -u root -p. Sau đó, bạn sẽ có toàn quyền trên máy chủ cơ sở dữ liệu và bạn có thể tạo người dùng khác.
derobert

Khi bạn đăng nhập bằng dòng lệnh, hãy làm như sau để đăng nhập bằng root: mysql -u root -p
Travis

1
@nikparsa: Không, bạn sẽ chạy nó thay vì 'mysql' từ dấu nhắc shell chứ không phải tại dấu nhắc mysql.
derobert

Câu trả lời:


219

Không, bạn nên chạy mysql -u root -ptrong bash, không phải ở dòng lệnh MySQL. Nếu bạn đang ở trong mysql, bạn có thể thoát bằng cách gõ exit .


? làm thế nào tôi có thể đi đến bash tôi có vấn đề cài đặt mysql thấy ở đây superuser.com/questions/377679/... Tôi chỉ biết abt nó trong dòng lệnh
Nickool

6
sử dụng 'thoát' để thoát khỏi mysql, sau đó bạn sẽ ở trong bash
Bây giờ là

23
FYI theo mặc định mật khẩu trống
bigpotato

Nếu tôi đang sử dụng windows thì sao?
PHPFan

thoát hoặc thoát không làm việc cho tôi, xin vui lòng cung cấp một cách khác. Tôi đang ở trên cửa sổ 10
Metin Dagcilar

46

Bạn có thể cần thiết lập tài khoản root cho cơ sở dữ liệu MySQL của mình:

Trong loại thiết bị đầu cuối:

mysqladmin -u root password 'root password goes here'

Và sau đó để gọi máy khách MySQL:

mysql -h localhost -u root -p

1
Cái này làm việc cho tôi, ban đầu nó hoạt động tốt và sau đó đột nhiên ngừng hoạt động một ngày. Bất cứ ý tưởng, tại sao điều này xảy ra ở nơi đầu tiên?
mu

@soleshoe tôi đang gặp lỗi: sudo: mysqladmin: lệnh không tìm thấy xin vui lòng giúp tôi tôi có thể làm gì ?? mysql chạy rất nhanh trong System Preference.
Hitarth

29

Tôi đã được đưa đến đây bởi một vấn đề khác. Bất cứ khi nào tôi cố gắng đăng nhập, tôi nhận được thông báo đó vì thay vì xác thực chính xác, tôi đã đăng nhập với tư cách là người dùng ẩn danh. Giải pháp cho vấn đề của tôi là:

Để xem bạn là người dùng nào và bạn có quyền:

select user(), current_user();

Để xóa người dùng ẩn danh pesky:

drop user ''@'localhost';

1
Điều này đã giải quyết vấn đề cho tôi mặc dù tôi đang sử dụng "mysql -u username -p". Rất lạ: user () là tên người dùng của tôi, nhưng current_user () là localhost ... không biết tại sao?
ethanpil

2
@Leftteris hi .. tôi nhận được lỗi này: Truy cập bị từ chối; bạn cần (ít nhất một trong số) đặc quyền CREATE USER cho thao tác này Khi tôi cố gắng thả người dùng '' @ 'localhost';
Hitarth

15

Đây là một cái gì đó để làm với sự cho phép của người dùng. Cung cấp tài trợ thích hợp sẽ giải quyết vấn đề này.

Bước [1]: Mở terminal và chạy lệnh này

$ mysql -uroot -p

Đầu ra [1]: Điều này sẽ cung cấp cho bạn lời nhắc mysql được hiển thị bên dưới

nhập mô tả hình ảnh ở đây

Bước 2]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';

Cú pháp:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';

Ghi chú:

  • tên máy chủ có thể là địa chỉ IP, localhost, 127.0.0.1
  • Trong database_name/ table_name, * có nghĩa là tất cả các cơ sở dữ liệu
  • Trong hostname, để chỉ định tất cả máy chủ sử dụng '%'

Bước [3]: Thoát khỏi dấu nhắc mysql hiện tại bằng cách nhập quit/ exitlệnh hoặc nhấn Ctrl+D.

Bước [4]: ​​Đăng nhập vào người dùng mới của bạn

$ mysql -uparsa -pyour_password

Bước [5]: Tạo cơ sở dữ liệu

mysql> create database `database_name`;

khi tôi làm CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';có lỗi: ERROR 1227 (42000): Truy cập bị từ chối; bạn cần (ít nhất một trong số) đặc quyền TẠO NGƯỜI DÙNG cho hoạt động này
máy bay

Bạn đã đăng nhập vào máy khách mysql bằng cách sử dụng người dùng root
theBuzzyCoder

9

Bạn có thể muốn thử lệnh đăng nhập đầy đủ:

mysql -h host -u root -p 

nơi chủ nhà sẽ được 127.0.0.1.

Làm điều này chỉ để đảm bảo sự hợp tác tồn tại.

Việc sử dụng mysql -u root -pcho phép tôi thực hiện rất nhiều tìm kiếm cơ sở dữ liệu, nhưng từ chối mọi hoạt động tạo cơ sở dữ liệu do cài đặt đường dẫn.


6

Đầu tiên, nếu bạn không quen với dòng lệnh, hãy thử sử dụng phpmyadmin từ webbrowser của bạn. Điều này sẽ đảm bảo bạn thực sự có một cơ sở dữ liệu mysql được tạo và tên người dùng.

Đây là cách bạn kết nối từ dòng lệnh (bash):

mysql -h hostname -u username -p database_name

Ví dụ:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb

1
-plà cho mật khẩu và bạn đang sử dụng nó để vượt qua tên cơ sở dữ liệu. Ngoài ra, đối với mật khẩu, không nên có khoảng trống b / w -pvà mật khẩu thực tế. Sử dụng -Dđể kết nối với một cơ sở dữ liệu cụ thể.
sv.

5

Nếu bạn đang ở trong trình MySQLbao, hãy thoát nó bằng cách gõ exit , nó sẽ đưa bạn trở lại dấu nhắc lệnh.

Bây giờ bắt đầu MySQLbằng cách sử dụng chính xác lệnh sau:

sudo mysql -u root -p

Nếu tên người dùng của bạn là một cái gì đó không phải là root, hãy thay thế 'root' trong lệnh trên bằng tên người dùng của bạn:

sudo mysql -u <your-user-name> -p

Sau đó, nó sẽ hỏi bạn MySQLtài khoản / mật khẩu và sau đó bạn MySQLsẽ không hiển thị bất kỳ vấn đề đặc quyền truy cập nào.


Sau khi nhập mật khẩu, tôi nhận được "sudo: mysql: lệnh không tìm thấy" Xin hãy giúp tôi về vấn đề này
Hitarth

nó không nên là "sudo:", nó phải là "sudo" ... Nếu đó không phải là một lỗi đánh máy, tôi nghĩ đây là vấn đề.
Kshitij Găngal

2

@Nickparsa Bạn có 2 vấn đề:

1). mysql -uroot -p nên được gõ trong bash (còn được gọi là thiết bị đầu cuối của bạn) không phải trong dòng lệnh MySQL. Bạn sửa lỗi này bằng cách gõ

exit

trong dòng lệnh MySQL của bạn. Bây giờ bạn đã trở lại trong dòng lệnh bash / terminal của bạn.

2). Bạn có một lỗi cú pháp:

mysql -uroot -p; 

dấu chấm phẩy trước -p cần phải đi. Cú pháp đúng là:

mysql -uroot -p

gõ cú pháp đúng trong dòng lệnh bash của bạn. Nhập mật khẩu nếu bạn có một thiết lập; khác chỉ cần nhấn nút enter. Bạn sẽ nhận được một phản hồi tương tự như sau: nhập mô tả hình ảnh ở đây

Hi vọng điêu nay co ich!


Xin chào, tôi đã nhận được màn hình abowly sau khi bắn khen ngợi này. / usr / local / mysql / bin / mysql nhưng sau đó khi tôi cố gắng tạo cơ sở dữ liệu bằng cách sử dụng "CREATE DATABASE book" sách 'xin hãy giúp tôi
Hitarth

0

Hầu hết các Nhà phát triển đăng nhập vào máy chủ (Tôi giả sử bạn có tên người dùng và mật khẩu cho cơ sở dữ liệu mysql) sau đó từ Bash họ chuyển sang mysql> promptsử dụng lệnh bên dưới (không hoạt động

mysql -h localhost -u root -p

Những gì cần làm là sử dụng lệnh trên trong dấu nhắc bash -> khi làm như vậy nó sẽ hỏi mật khẩu nếu được cung cấp, nó sẽ đưa trực tiếp đến dấu nhắc mysql và

sau đó cơ sở dữ liệu, bảng có thể được tạo từng cái một

Tôi đã đối mặt với bế tắc tương tự để chia sẻ kinh nghiệm


0

Tôi đã có lệnh chính xác cho mỗi câu trả lời ở trên, những gì tôi đã bỏ lỡ là trên Workbench, nơi chúng tôi đề cập đến 'Giới hạn kết nối từ máy chủ' cho người dùng, nó mặc định là "%" - thay đổi thành "localhost" và nó sẽ kết nối tốt sau đó!

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.