it-swarm-vi.tech

LRI 1045 (28000): Truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu: CÓ)

Tôi là một kỹ sư điện, chủ yếu chơi xung quanh với hệ thống điện thay vì lập trình. Gần đây, tôi đã làm theo hướng dẫn để cài đặt bộ phần mềm trên Ubuntu. Tôi thực sự không có kiến ​​thức về mySQL. Tôi đã thực hiện các cài đặt sau trên Ubuntu của mình.

Sudo apt-get update
Sudo apt-get install mysql-server-5.5
Sudo apt-get install mysql-client-5.5
Sudo apt-get install mysql-common
Sudo apt-get install glade
Sudo apt-get install ntp

Sau đó tôi làm

[email protected]:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

Tôi đã kết thúc với thông báo lỗi sau.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Làm thế nào tôi có thể sửa chữa nó và tiếp tục?

129
Sibbs Gambling

Lưu ý: Dành cho MySQL 5.7+ vui lòng xem trả lời từ @Lahiru cho câu hỏi này. Điều đó chứa nhiều thông tin hiện tại.

Đối với MySQL <5.7:

Mật khẩu gốc mặc định là trống (tức là chuỗi trống) không root. Vì vậy, bạn chỉ có thể đăng nhập như:

mysql -u root

Bạn rõ ràng nên thay đổi mật khẩu root của bạn sau khi cài đặt

mysqladmin -u root password [newpassword]

Trong hầu hết các trường hợp, bạn cũng nên thiết lập tài khoản người dùng cá nhân trước khi làm việc rộng rãi với DB.

119
Mike Brant

Tôi đã có thể giải quyết vấn đề này bằng cách thực hiện tuyên bố này

Sudo dpkg-reconfigure mysql-server-5.5

Mà sẽ thay đổi mật khẩu root.

111
Divz

Bạn phải đặt lại mật khẩu! các bước cho mac osx (đã thử nghiệm và hoạt động) và Ubuntu

Dừng MySQL sử dụng

Sudo service mysql stop

hoặc là

$ Sudo /usr/local/mysql/support-files/mysql.server stop

Khởi động nó ở chế độ an toàn:

$ Sudo mysqld_safe --skip-grant-tables --skip-networking

(dòng trên là toàn bộ lệnh)

Đây sẽ là một lệnh đang diễn ra cho đến khi quá trình kết thúc, vì vậy hãy mở một cửa sổ Shell/terminal khác, đăng nhập mà không cần mật khẩu:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Theo nhận xét của @ IberoMedia, đối với các phiên bản mới hơn của MySQL, trường được gọi là authentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

Bắt đầu sử dụng MySQL:

Sudo service mysql start

hoặc là

Sudo /usr/local/mysql/support-files/mysql.server start

mật khẩu mới của bạn là 'mật khẩu'.

57
tk_

nếu vấn đề vẫn còn tồn tại, hãy cố gắng thay đổi đường chuyền

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Thiết lập mật khẩu người dùng root MySQL mới

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Dừng máy chủ MySQL:

/etc/init.d/mysql stop

Khởi động máy chủ MySQL và kiểm tra nó:

mysql -u root -p
28
Yasin Hassanien

Khi khởi động máy chủ ban đầu, điều sau đây xảy ra, với điều kiện là thư mục dữ liệu của máy chủ trống:

  • Máy chủ được khởi tạo.
  • Chứng chỉ SSL và các tệp chính được tạo trong thư mục dữ liệu.
  • Plugin validate_password được cài đặt và kích hoạt.
  • Tài khoản superuser 'root' @ 'localhost' được tạo. Mật khẩu cho siêu người dùng được đặt và lưu trong tệp nhật ký lỗi. 

Để tiết lộ nó, sử dụng lệnh sau:

Shell> Sudo grep 'temporary password' /var/log/mysqld.log

Thay đổi mật khẩu root càng sớm càng tốt bằng cách đăng nhập bằng mật khẩu tạm thời được tạo và đặt mật khẩu tùy chỉnh cho tài khoản superuser:

Shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
19
Lahiru

Tôi biết đây là một câu hỏi cũ nhưng tôi cảm thấy điều này có thể giúp được ai đó. Gần đây tôi đã phải đối mặt với cùng một vấn đề nhưng trong trường hợp của tôi, tôi nhớ mật khẩu của mình khá ổn nhưng nó vẫn gây ra lỗi tương tự. Tôi đã thử rất nhiều giải pháp nhưng vẫn không có gì giúp được. Tôi đã thử 

mysql -u root -p 

sau đó nó yêu cầu bạn vượt qua Word như thế này

Enter password: 

và sau đó tôi gõ mật khẩu tôi đã sử dụng. Đó là tất cả

16
XY-JOE

Nó xảy ra khi mật khẩu của bạn bị mất.

Các bước để thay đổi mật khẩu khi bạn quên:

  1. Dừng máy chủ MySQL (trên Linux):

    Sudo systemctl stop mysql
    
  2. Bắt đầu cơ sở dữ liệu mà không cần tải các bảng cấp hoặc cho phép kết nối mạng:

    Sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    Dấu và ở cuối lệnh này sẽ làm cho quá trình này chạy trong
    nền để bạn có thể tiếp tục sử dụng thiết bị đầu cuối của mình và chạy #mysql -u root, nó sẽ không yêu cầu mật khẩu.

    Nếu bạn gặp lỗi như dưới đây:

    2018-02-12T08: 57: 39.826071Z Thư mục mysqld_safe '/ var/run/mysqld' cho UNIX
    Tệp ổ cắm không tồn tại . mysql -u root ERROR 2002 (HY000): Không thể kết nối với máy chủ MySQL cục bộ thông qua ổ cắm
    '/ var/run/mysqld/mysqld.sock' (2) [1] + Thoát 1 

  3. Tạo thư mục dịch vụ MySQL.

    Sudo mkdir /var/run/mysqld
    

    Cấp quyền cho người dùng MySQL để ghi vào thư mục dịch vụ.

    Sudo chown mysql: /var/run/mysqld
    
  4. Chạy lệnh tương tự trong bước 2 để chạy mysql trong nền.

  5. Chạy mysql -u root, bạn sẽ nhận được bảng điều khiển mysql mà không cần nhập mật khẩu. 

    Chạy các lệnh này

    FLUSH PRIVILEGES;
    

    Dành cho MySQL 5.7.6 trở lên

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

    Dành cho MySQL 5.7.5 trở lên

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

    Nếu lệnh ALTER USER không hoạt động, hãy sử dụng:

    UPDATE mysql.user SET authentication_string = PASSWORD('new_password')     WHERE User = 'root' AND Host = 'localhost';
    

Bây giờ thoát

  1. Để dừng cá thể bắt đầu bằng tay

    Sudo kill `cat /var/run/mysqld/mysqld.pid`
    
  2. Khởi động lại mysql

    Sudo systemctl start mysql
    
15
Sameer Choudhary

Đang sử dụng Ubuntu-16.04: đã cài đặt mysql - 5.7 . Tôi gặp vấn đề tương tự: Đăng nhập bị từ chối cho người dùng root.

Đã thử các bước dưới đây:

  1. dpkg --get-selections | grep mysql (để lấy phiên bản mysql).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Không có -p mà không nhắc bạn hỏi mật khẩu. Khi bạn đã vào, bạn có thể tạo người dùng bằng mật khẩu bằng các bước sau:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

Thoát khỏi root và đăng nhập từ bạn đã đưa ra ở trên.

mysql -u <your_new_username> -p

Vì một số lý do vẫn chỉ gõ mysql không hoạt động. AT TẤT CẢ. Tôi đề nghị tạo thói quen sử dụng mysql -u <name> -p.

10
Nikhil Rushmith

Tôi đã gặp vấn đề rất khó chịu này và tìm thấy nhiều câu trả lời không hiệu quả. Giải pháp tốt nhất tôi gặp phải là gỡ cài đặt hoàn toàn mysql và cài đặt lại. Khi cài đặt lại, bạn đặt mật khẩu root và điều này đã khắc phục vấn đề.


Sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
Sudo rm -rf /etc/mysql /var/lib/mysql
Sudo apt-get autoremove
Sudo apt-get autoclean

Tôi tìm thấy mã này ở nơi khác vì vậy tôi không có tín dụng cho nó. Nhưng nó hoạt động . Để cài đặt mysql sau khi gỡ cài đặt, tôi nghĩ Digital Ocean có một hướng dẫn tốt về nó. Kiểm tra ý chính của tôi cho điều này .
https://Gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

6
JamesD

Vui lòng đọc tài liệu chính thức: Mysql: Cách đặt lại mật khẩu gốc

Nếu bạn có quyền truy cập vào thiết bị đầu cuối: 

MySQL 5.7.6 trở lên:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 trở về trước:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
5
d.danailov

Tôi đang sử dụng mysql-5.7.12-osx10.11-x86_64.dmg trong Mac OSX

Quá trình cài đặt sẽ tự động thiết lập mật khẩu tạm thời cho người dùng root. Bạn nên lưu mật khẩu. Mật khẩu không thể được phục hồi. 

Làm theo hướng dẫn

  1. Truy cập cd /usr/local/mysql/bin/
  2. Nhập mật khẩu tạm thời (trông giống như "tsO07JF1 => 3")
  3. Bạn sẽ nhận được mysql> Nhắc. 
  4. Chạy, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}'); Nếu bạn muốn đặt mật khẩu của mình: "root" thì lệnh sẽ là, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. Chạy ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. Chạy exit
  7. Chạy ./mysql -u root -p
  8. Nhập mật khẩu của bạn. Trong trường hợp của tôi, tôi sẽ gõ, "root" (không có trích dẫn)
  9. Đó là tất cả. 

Để thuận tiện, bạn nên thêm "/usr/local/mysql/bin" vào PATH của bạn

Bây giờ từ bất cứ nơi nào bạn có thể nhập ./mysql -u root -p và sau đó nhập mật khẩu và bạn sẽ nhận được mysql> Prompt. 

Hy vọng nó giúp. 

3
tausiq

Câu trả lời nghe có vẻ ngớ ngẩn, nhưng sau khi lãng phí hàng giờ, đây là cách tôi làm cho nó hoạt động

mysql -u root -p

Tôi nhận được thông báo lỗi

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Mặc dù tôi đã gõ đúng mật khẩu (mật khẩu tạm thời bạn nhận được khi lần đầu tiên cài đặt mysql)

Tôi đã hiểu đúng khi tôi nhập mật khẩu khi mật khẩu Nhắc đang nhấp nháy

3
Amit Kumar

nếu vấn đề vẫn còn tồn tại, hãy cố gắng thay đổi đường chuyền

Dừng máy chủ MySQL (trên Linux):

/etc/init.d/mysql stop

Dừng máy chủ MySQL (trên Mac OS X):

mysql.server stop

Bắt đầu mysqld_safe daemon với --skip-Grant-bảng

mysqld_safe --skip-grant-tables &
mysql -u root

Thiết lập mật khẩu người dùng root MySQL mới

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Dừng máy chủ MySQL (trên Linux):

/etc/init.d/mysql stop

Dừng máy chủ MySQL (trên Mac OS X):

mysql.server stop

Bắt đầu dịch vụ máy chủ MySQL và kiểm tra để đăng nhập bằng root:

mysql -u root -p
2
Max Yao

chỉ cần vào thiết bị đầu cuối

gốc mys -u -p. hơn nó sẽ hỏi mật khẩu cho bạn

1
Vahap Gençdal

Chỉ cần một dòng và nó đã giải quyết vấn đề của tôi.

Sudo dpkg-reconfigure mysql-server-5.5
1
Satyendra Sahani

Trong Ubuntu 16.04 (phiên bản MySQL 5.7.13) tôi đã có thể giải quyết vấn đề bằng các bước bên dưới:

  1. Làm theo các hướng dẫn từ phần B.5.3.2.2 Đặt lại mật khẩu gốc: Hệ thống tương tự Unix và Unix Hướng dẫn tham khảo MySQL 5.7

  2. Khi tôi thử #Sudo mysqld_safe --init-file =/home/me/mysql-init & nó đã thất bại. Lỗi là ở /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [Lưu ý] Thi hành init_file '/ home/me/mysql/mysql-init' đã bắt đầu . 2016-08-10T11: 41: 20.422070Z 0 [ERROR]/usr/sbin/mysqld: Không tìm thấy tệp '/ home/me/mysql/mysql-init' (Mã xác nhận: 13 - Quyền bị từ chối) 2016-08-10T11: 41: 20.422096Z 0 [LRI]

Quyền của tập tin mysql-init không phải là vấn đề, cần chỉnh sửa quyền của apparmor

  1. Chỉnh sửa bởi #Sudo vi /etc/apparmor.d/usr.sbin.mysqld 

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
    
  2. Làm #Sudo /etc/init.d/apparmor tải lại

  3. Bắt đầu mysqld_safe một lần nữa thử bước 2 ở trên. Kiểm tra /var/log/mysql/error.log đảm bảo không có lỗi và mysqld được khởi động thành công

  4. Chạy #mysql -u root -p

    Nhập mật khẩu:

Nhập mật khẩu mà bạn đã chỉ định trong mysql-init. Bạn sẽ có thể đăng nhập với quyền root ngay bây giờ.

  1. Tắt máy mysqld_safe bằng cách tắt #Sudo mysqladmin -u root -p

  2. Bắt đầu mysqld theo cách thông thường bằng cách #Sudo systemctl bắt đầu mysql

1
codegen

Điều này sẽ hoạt động nếu bạn đang nhập các lệnh được nói trong các câu trả lời khác nhưng bạn vẫn nhận được lỗi này:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  Sudo mysqld_safe --skip-grant-tables

Thực hiện theo các lệnh dưới đây từng bước cho đến khi bạn đặt lại mật khẩu của mình:

# Stop Your Server First
Sudo service mysql stop

# Make MySQL service directory.
Sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
Sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
Sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -uroot mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its Host

FLUSH PRIVILEGES;
EXIT;

#Now you can use your new password to login to your Server
mysql -uroot -p
1
Mehdi

Nếu bạn chưa đặt mật khẩu, thì hãy chạy mysql -uroot, nó hoạt động với tôi.

0
ahbon

Tôi đã có một vấn đề tương tự:

LRI 1045 (28000): Truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu: NO)

Nhưng trong trường hợp của tôi, nguyên nhân thực sự là ngớ ngẩn. Tôi đã sao chép lệnh từ một tài liệu Word và vấn đề là một dấu gạch nối không có mã ASCII 2D mà là Unicode E28093.

Nhầm đường:

mysql -u root –pxxxx

Đúng cách:

mysql -u root -pxxxx

Cả hai trông giống nhau nhưng không giống nhau (thử, sao chép và dán thay thế mật khẩu của bạn).

Đối mặt với loại lỗi này, khuyến nghị là thử gõ lệnh thay vì sao chép và dán.

0
cesargastonec

Trên Mac, nếu bạn gặp vấn đề trong việc đăng nhập bằng mật khẩu đầu tiên bạn được cung cấp khi cài đặt, có thể bạn chỉ cần giết tiến trình mysql và sau đó thử. 

Vì vậy: 1- chạy lệnh sau để tìm PID của mysql:

ps -aef | grep mysql | grep -v grep

2- giết quá trình:

kill -15 [process id] 

Sau đó, bạn có thể đăng nhập bằng mật khẩu ban đầu bằng lệnh này:

mysql -uroot -p

Mà yêu cầu bạn nhập mật khẩu của bạn. Chỉ cần nhập mật khẩu ban đầu.

0
Maryam Zakani

Mật khẩu mặc định sẽ là null, vì vậy bạn phải thay đổi mật khẩu bằng cách thực hiện các bước dưới đây.

kết nối với mysql

root # mysql

Sử dụng mysql

mysql cập nhật người dùng đặt mật khẩu = PASSWORD ('root') trong đó User = 'root'; Cuối cùng, tải lại các đặc quyền:

mysql tuôn ra các đặc quyền; mysql thoát

0
Rizwan Basheer

Tôi đã thử với câu trả lời đúng của @Lahiru, nhưng không hoạt động với máy chủ MySQL phiên bản 8.0.16 (Cộng đồng) trên macOS Mojave.

Làm theo hướng dẫn của Sameer Choudhary ở trên và với một số điều chỉnh, tôi đã có thể thay đổi mật khẩu root và cho phép truy cập root từ localhost.

Cập nhật: Tất cả những điều này là không bắt buộc, nếu bạn đang cài đặt trên Mac OS bằng homebrew: "brew install mysql"

0
cspider

Trong các phiên bản MySQL gần đây, không có password trong bảng mysql.user.

Vì vậy, bạn cần phải thực thi ALTER USER. Đặt lệnh một dòng này vào tập tin. 

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Và thực thi nó dưới dạng tệp init (với tư cách là người dùng root hoặc mysql)

mysqld_safe --init-file=/home/me/mysql-init &

Máy chủ MySQL cần được dừng lại để bắt đầu mysqld_safe

Ngoài ra, có thể có vấn đề với quyền apparmor để tải tệp init này. Đọc thêm tại đây https://bloss.Oracle.com/jsmyth/entry/apparmor_and_mysql

0
Vladimir Kovalchuk