2009-03-13 35 views
12

Tôi đang chạy MySQL 5.x trên hộp Windows cục bộ của mình và sử dụng quản trị viên MySQL, tôi không thể kết nối với cơ sở dữ liệu tôi đã tạo bằng tài khoản gốc. Các lỗi tôi nhận được là:MySQL: không thể truy cập tài khoản root

MySQL số ​​Lỗi 1045 Truy cập bị từ chối cho người dùng 'root' @ 'localhost' (sử dụng password: YES)

Tôi không thể nhớ thay đổi thông tin tài khoản gốc nhưng tôi biết tôi đã cố gắng cung cấp cho các máy tính khác truy cập mạng LAN vào db bằng cách thêm IP của họ. Một điều tôi đã làm đối với một trong các địa chỉ IP là chỉ định quyền truy cập vào tài khoản 'root' thay vì root, tức là tôi đã bao quanh gốc với các ký tự báo giá đơn. Tất cả đều sử dụng quản trị viên MySQL. Đây có phải là lý do tại sao tôi không thể đăng nhập bằng root?

Ngoài ra, có cách nào để tạo mới hoặc đặt lại tài khoản gốc không? Như đã đề cập trước đây, tôi có toàn quyền truy cập vào hộp của mình.

Xem những câu hỏi

+1

Tôi đã thử --skip-grant-tables và conencting bằng -u root nhưng tôi vẫn nhận được: Truy cập bị từ chối cho người dùng 'root' @ 'localhos t '(sử dụng mật khẩu: NO). –

Trả lời

14

Bạn có thể sử dụng tệp init. Kiểm tra tài liệu chính thức của MySQL theo số How to Reset the Root Password (bao gồm cả các nhận xét cho các giải pháp thay thế). Vì vậy, về cơ bản sử dụng các tệp init, bạn có thể thêm bất kỳ truy vấn SQL nào bạn cần để sửa quyền truy cập của mình (chẳng hạn như GRAND, CREATE, FLUSH PRIVILEGES, v.v.) vào tệp init (bất kỳ tệp nào).

Dưới đây là ví dụ của tôi phục hồi tài khoản root:

echo "CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';" > your_init_file.sql 
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;" >> your_init_file.sql 
echo "FLUSH PRIVILEGES;" >> your_init_file.sql 

và sau khi bạn đã tạo tập tin của bạn, bạn có thể chạy:

killall mysqld 
mysqld_safe --init-file=$PWD/your_init_file.sql 

sau đó để kiểm tra nếu điều này làm việc, nhấn Ctrl + Z và nhập: bg để chạy quy trình từ nền trước vào nền sau đó xác minh quyền truy cập của bạn theo:

mysql -u root -proot 
mysql> show grants; 
+-------------------------------------------------------------------------------------------------------------+ 
| Grants for [email protected]                     | 
+-------------------------------------------------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' | 

Xem thêm:

+1

Điều này là tốt, chúc mừng. Hướng dẫn viên chính thức dường như hơi dài và lúng túng ... –

+0

Có cùng một vấn đề. Ngoài ra tôi phải thêm các dòng này trước khi tạo dòng người dùng trong your_init_file.sql ** drop user 'root' @ 'localhost'; đặc quyền xóa; ** –

1

Tôi có cùng một vấn đề khi truy cập vào mysql với root.Vấn đề tôi tìm thấy là một số tập tin cơ sở dữ liệu không có sự cho phép của người dùng mysql, đó là người dùng đã khởi động trình nền máy chủ mysql.

Chúng tôi có thể kiểm tra điều này với lệnh ls -l /var/lib/mysql, nếu người dùng mysql không có quyền đọc hoặc ghi trên một số tệp hoặc thư mục, điều đó có thể gây ra sự cố. Chúng tôi có thể thay đổi chủ sở hữu hoặc chế độ của những tệp hoặc thư mục đó bằng các lệnh chown/chmod.

Sau những thay đổi này, khởi động lại daemon mysqld và đăng nhập với root bằng lệnh:

mysql -u root 

Sau đó, thay đổi mật khẩu hoặc tạo những người dùng khác để đăng nhập vào mysql.

HTH

2

này đã làm việc cho tôi:

https://blog.dotkam.com/2007/04/10/mysql-reset-lost-root-password/

Bước 1: Dừng MySQL daemon nếu nó hiện đang chạy

ps -ef | grep mysql  - checks if mysql/mysqld is one of the running processes. 

    pkill mysqld    - kills the daemon, if it is running. 

Bước 2: Chạy MySQL daemon an toàn với bỏ qua cấp bảng

mysqld_safe --skip-grant-tables & 

    mysql -u root mysql 

Bước 3: Đăng nhập vào MySQL là root không có mật khẩu

mysql -u root mysql 

Bước 4: Chạy truy vấn UPDATE để thiết lập lại mật khẩu gốc

UPDATE user SET password=PASSWORD("value=42") WHERE user="root"; 
    FLUSH PRIVILEGES; 

Bước 5: Dừng MySQL daemon an toàn

Bước 6: Khởi động MySQL daemon

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