2013-07-31 41 views
20

Tôi liên tục nhận được lỗi này.Truy cập bị từ chối cho người dùng 'root' @ 'localhost' (sử dụng mật khẩu: YES) - Không có đặc quyền?

Tôi đang sử dụng mySQL Workbench và từ những gì tôi tìm thấy là các đặc quyền lược đồ của root là null. Không có đặc quyền nào cả.

Tôi gặp sự cố trên các nền tảng mà máy chủ của tôi được sử dụng và điều này đã là một vấn đề bất ngờ.

[email protected] dường như có phân bổ quyền truy cập nhưng tôi đã đăng nhập như vậy, nhưng nó chỉ gán cho localhost anyways - localhost không có đặc quyền.

Tôi đã thực hiện một vài điều như FLUSH HOSTS, FLUSH PRIVILEGES, ect nhưng không tìm thấy thành công nào từ đó hoặc trên internet.

Làm cách nào để lấy lại quyền truy cập gốc? Tôi thấy điều này bực bội vì khi tôi nhìn xung quanh, mọi người mong bạn "có quyền truy cập" nhưng tôi không có quyền truy cập nên tôi không thể đi vào dòng lệnh hay bất cứ thứ gì và GRANT bản thân mình.

Khi chạy SHOW tài trợ cho gốc này là những gì tôi có được: Mã lỗi: 1141. Không có tài trợ như định nghĩa cho người dùng 'root' trên máy chủ '%'

Nhờ bất cứ ai có thể cung cấp sự giúp đỡ

+0

Chạy 'SHOW GRANTS FOR root' trong truy vấn, đăng kết quả trong câu hỏi của bạn. – NobleUplift

+0

Bạn đang cố truy cập cơ sở dữ liệu từ máy chủ cục bộ hoặc từ máy chủ khác bằng cách sử dụng MySQL Workbench? –

+0

khởi động lại máy chủ với --skip-grant-table và đăng nhập với bất kỳ người dùng nào và cung cấp đầy đủ đặc quyền cho root và khởi động lại máy chủ mà không có tùy chọn ở trên – vidyadhar

Trả lời

19

sử dụng the instructions for resetting the root password - nhưng thay vì thiết lập lại mật khẩu gốc, chúng tôi sẽ đi một cách mạnh mẽ INSERT một record vào bảng mysql.user

trong tập tin init, sử dụng thay vì

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD')); 
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION; 
+1

Tôi xin lỗi Andy, nhưng khi tôi đến bước 6, tôi tiếp tục gặp vấn đề. Vì tôi đã sử dụng thuật sĩ cài đặt, tôi sẽ sử dụng '" C: \ Program Files \ MySQL \ MySQL Server 5.6 \ bin \ mysqld.exe " --defaults-file =" C: \\ Program Files \\ MySQL \\ MySQL Server 5.6 \\ my.ini " --init-file = C: \\ mysql-init.txt' Mọi thứ đều ở nơi mà nó được cho là và những gì bạn có ở trên tôi đã đưa vào tệp tương ứng . Tôi cũng ngừng dịch vụ. Tôi chỉ nhận được kết quả này: http://prntscr.com/1ilxau Và mọi thứ (plugin) tắt máy. Thực sự khó hiểu. – Chase

+1

bạn có đang chạy với tư cách là quản trị viên không? –

+1

Tại sự ngạc nhiên đáng kinh ngạc của tôi, tôi đã không. Sau khi tôi, tôi đã nhận được http://prntscr.com/1imcnj - Lần đầu tiên tôi đã làm điều đó trên các dòng của riêng họ (từ dán) sau đó tôi đặt tất cả trên một dòng. Tôi xin lỗi vì điều này thật khó hiểu đối với tôi, không phải là chuyên gia về sql. – Chase

1

Vâng cách dễ nhất để thiết lập lại mật khẩu gốc là:

  • khởi động lại mysqld --skip-cấp-bảng tùy chọn. Điều này cho phép mọi người kết nối mà không cần mật khẩu và với tất cả các đặc quyền. Vì đây là không an toàn, bạn có thể muốn sử dụng --skip-grant-tables kết hợp với --skip-networking để ngăn khách hàng từ xa kết nối.

  • Kết nối với máy chủ mysqld bằng lệnh này:

  • vỏ> mysql Ban hành những điều khoản sau đây trong các khách hàng mysql. Thay thế mật khẩu bằng mật khẩu bạn muốn sử dụng.

  • mysql> CẬP NHẬT mysql.user SET Mật khẩu = PASSWORD ('MyNewPass') -> WHERE User = 'root'; mysql FLUSH PRIVILEGES;

  • Dừng máy chủ, sau đó khởi động lại máy chủ bình thường (không có các tùy chọn --skip-grant-tables và --skip-networking).

Nguồn tài liệu Mysql và kinh nghiệm cá nhân:

http://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html

15

Tôi không thích đặc quyền người dùng của mình nên tôi SUDO. (trong bash < < sudo tập người dùng và mật khẩu) (điều này mang lại tên người dùng của rễ và đặt mật khẩu để không có gì) (Trên Mac)

sudo mysql -uroot -p 
8

Hãy thử các lệnh sau

~$ sudo /etc/init.d/mysql stop 
~$ sudo mysqld_safe --skip-grant-tables & 
~$ mysql -u root 
Welcome to the MySQL monitor. Commands end with ; or \g. 

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 

mysql> 

mysql> use mysql; 

mysql> update user set password=PASSWORD("root") where User='root'; 

mysql> flush privileges; 

mysql> quit 

~$ sudo /etc/init.d/mysql stop 

Stopping MySQL database server: mysqld 

STOPPING server from pid file /var/run/mysqld/mysqld.pid 

mysqld_safe[6186]: ended 

[1]+ Done     mysqld_safe --skip-grant-tables 

~$ sudo /etc/init.d/mysql start 

~$ mysql -u root -p 

* MySQL Community Server 5.6.35 is started 
~$ mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 1 
Server version: 5.6.35 MySQL Community Server (GPL) 

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 
+0

Trong MySQL 5.7, trường mật khẩu trong trường bảng mysql.user đã bị xóa, bây giờ tên trường là 'authentication_string'. – Rumid

0

Thử các bước sau để khắc phục sự cố này:

  1. Mở thiết bị đầu cuối/dấu nhắc lệnh và điều hướng đến bin f cũ hơn của thư mục cài đặt MySQL. Sau đó, chạy lệnh mysqld --console.
  2. Nếu bạn có thể thấy dòng 171010 14:58:22 [Note] --secure-file-priv được đặt thành NULL. Các hoạt động liên quan đến nhập và xuất dữ liệu bị tắt, sau khi thực hiện lệnh trên từ dấu nhắc lệnh.
  3. Sau đó, bạn cần kiểm tra xem mysqld có bị chặn bởi Tường lửa của Windows hoặc chương trình khác hay không.
  4. Nếu bị chặn bởi Tường lửa của Windows thì cần phải bỏ chặn và lưu cài đặt.
  5. Để bỏ chặn các ứng dụng mysqld hoặc mysql, hãy làm theo các bước dưới đây:
    1. Đến command prompt và gõ wf.msc để mở các thiết lập tường lửa.
    2. Nhấp vào Cho phép ứng dụng hoặc tính năng thông qua Tường lửa của Windows.
    3. Kiểm tra các trường hợp mysqld hoặc mysqld có sẵn trong danh sách và chọn hộp kiểm cho miền, công khai và riêng tư và lưu cài đặt.
  6. Quay lại thư mục bin và thử lại lệnh từ bước 1.
  7. Nó sẽ hoạt động tốt và không hiển thị bất kỳ lỗi nào.

Bạn có thể chạy bàn điều khiển MySQL mà không gặp bất kỳ sự cố nào ngay bây giờ!

0

tôi giải quyết vấn đề tương tự sử dụng sql tới và khởi động lại máy chủ MySQL:

update mysql.user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y' 
where user='root'; 
1

tôi làm việc trên Access Denied cho User 'root' @ 'localhost' (sử dụng mật khẩu: YES) trong vài giờ, tôi có tìm thấy giải pháp sau đây,

The answer to this problem was that in the my.cnf located within 
/etc/mysql/my.cnf 

the line was either 
bind-address = 127.0.0.1 
      (or) 
bind-address = localhost 
      (or) 
bind-address = 0.0.0.0 

I should prefer that 127.0.0.1 

I should also prefer 0.0.0.0, it is more flexible 
because which will allow all connections 
+0

Có Nó hoạt động với tôi – siva

0

tôi không nghĩ rằng bạn cần phải thoát khỏi --init-file tham số:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt

nên là:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt

3

cho những người đang phải đối mặt dưới lỗi trong mysql 5.7+ phiên bản -

Access denied for user 'root'@'localhost' (using password: YES) 
  1. mở terminal mới

  2. sudo /etc/init.d/mysql stop ... MySQL Community Server 5.7.8-rc ngừng

  3. sudo mysqld_safe --skip-grant-tables & này sẽ skipp tất cả các đặc quyền cấp cấp và bắt đầu mysql trong chế độ an toàn Đôi khi quá trình này đã stucked chỉ vì

grep: lỗi ghi: Ống bị hỏng 180102 11:32:28 mysqld_safe Đang đăng nhập vào '/var/log/mysql/error.log'.

Đơn giản chỉ cần nhấn tổ hợp phím Ctrl + Z hoặc Ctrl + C để gián đoạn và quá trình thoát

  1. mysql -u root

Chào mừng bạn đến với màn hình MySQL. Các lệnh kết thúc bằng; hoặc \ g. ID kết nối MySQL của bạn là 2 Phiên bản máy chủ: 5.7.8-rc Máy chủ cộng đồng MySQL (GPL)

Bản quyền (c) 2000, 2015, Oracle và/hoặc các chi nhánh của nó. Đã đăng ký Bản quyền.

Oracle là thương hiệu đã đăng ký của Oracle Corporation và/hoặc các chi nhánh của mình. Các tên khác có thể là thương hiệu của các chủ sở hữu tương ứng của chúng.

Nhập 'trợ giúp'; hoặc '\ h' để được trợ giúp. Nhập '\ c' để xóa câu lệnh nhập hiện tại.

  1. mysql>use mysql;

thông tin bảng Reading hoàn thành bảng và cột tên Bạn có thể tắt tính năng này để có được một khởi động nhanh hơn với -A

Cơ sở dữ liệu thay đổi

  1. mysql>update user set authentication_string=password('password') where user='root'; Query OK, 4 hàng bị ảnh hưởng, 1 cảnh báo (0,03 giây) 012.Rows lần xuất hiện: 4 Changed: 4 Cảnh báo: 1

  2. mysql>flush privileges; Query OK, 0 rows affected (0.00 giây)

  3. mysql>quit Bye

  4. sudo /etc/init.d/mysql stop

..180102 11:37:12 mysqld_safe mysqld từ tệp pid /var/run/mysqld/mysqld.pid đã kết thúc . * MySQL Community Server 5.7.8-rc ngừng arif @ ubuntu: ~ $ sudo /etc/init.d/mysql bắt đầu .. * MySQL Community Server 5.7.8-rc được bắt đầu

  1. mysql -u root -p

    Nhập mật khẩu:

    Chào mừng bạn đến với màn hình MySQL. Các lệnh kết thúc bằng; hoặc \ g. kết nối MySQL của bạn id là 2 Server phiên bản: 5.7.8-rc MySQL Community Server (GPL)

sau mysql 5.7+ phiên bản mật khẩu cột thay thế bằng tên authentication_string từ bảng mysql.user.

hy vọng các bước này sẽ giúp mọi người, cảm ơn.

+0

Bước 6 làm việc cho tôi ....! – Krunal

1

cho mật khẩu ur vấn đề trên trong hệ thống phải khớp với mật khẩu u đã qua trong chương trình vì khi bạn chạy chương trình, nó kiểm tra mật khẩu của hệ thống vì bạn đã cấp quyền root cho người dùng. đồng thời hồ sơ không bị xóa khỏi cơ sở dữ liệu.

import java.sql.DriverManager; 
import java.sql.Connection; 
import java.sql.Statement; 
import java.sql.ResultSet; 
class Delete 
{ 
    public static void main(String []k) 
    { 
     String url="jdbc:mysql://localhost:3306/student"; 

     String user="root"; 
     String pass="jacob234"; 
     try 
     { 
      Connection myConnection=DriverManager.getConnection(url,user,pass); 
      Statement myStatement=myConnection.createStatement(); 
      String deleteQuery="delete from students where id=2"; 
      myStatement.executeUpdate(deleteQuery); 
      System.out.println("delete completed"); 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

Giữ mật khẩu hệ thống ur là jacob234 và sau đó chạy mã.

0

Tôi đã giải quyết vấn đề tương tự bằng cách chạy Workbench với tư cách quản trị viên.

... Tôi đoán đó là do các hạn chế đối với máy tính của công ty, trong trường hợp của tôi ...

Các vấn đề liên quan