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Ó)


184

Tôi là một kỹ sư điện, chủ yếu chơi xung quanh với các 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 không có kiến ​​thức về mySQLtất cả, thực sự. 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

me@ubuntu:~/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?


1
Điều này dường như không được lập trình nghiêm ngặt liên quan đến tôi. Tôi đã gắn cờ nó để di chuyển đến SuperUser
Uli Köhler

Khách truy cập trong tương lai, cũng đừng quên kiểm tra một số nguyên nhân được giải thích tại đây: dev.mysql.com/doc/refman/8.0/en/probols-connecting.html
aderchox

Câu trả lời:


155

Lưu ý: Đối với MySQL 5.7+, vui lòng xem câu 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.


5
@FarticlePilter -pCờ chỉ định mật khẩu, vì vậy sau khi bạn thay đổi mật khẩu gốc, bạn sẽ làm như thế nào mysql -u root -p[newpassword]. Việc < [filename]sử dụng đầu vào std để thực thi tệp SQL theo đường dẫn được cung cấp thông qua thông tin xác thực người dùng mà bạn cung cấp.
Mike Brant

27
Tôi đã cố gắng như đã nói mysqladmin -u root password abc1234, nhưng tôi đã nhận được mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'. Cảm ơn bạn rất nhiều!
Đánh bạc Sibbs

2
@Kanagaroo trong câu hỏi này, OP tuyên bố họ mới cài đặt MySQL lần đầu tiên và sau đó thử truy cập thông qua ứng dụng khách dòng lệnh MySQL. Nghe có vẻ như lần đầu tiên truy cập vào tôi.
Mike Brant

18
Trên thực tế đối với máy chủ cộng đồng mysql 5.7, mật khẩu gốc mặc định được tạo ngẫu nhiên khi bạn cài đặt. Kiểm tra /var/log/mysqld.log của bạn để biết một dòng nói về "mật khẩu tạm thời". Tiết kiệm hàng giờ lộn xộn xung quanh.
Phil

1
@BraianMellor Điều này giải quyết vấn đề cho MySQL <5.7 trong đó mật khẩu gốc (cài đặt sau) mặc định trên Ubuntu là trống (không có mật khẩu), trong câu hỏi ban đầu người đăng đang cố gắng sử dụng root / root. Câu hỏi không phải là về việc mất mật khẩu, thay đổi mật khẩu hoặc tương tự. Đối với các phiên bản mới hơn của MySQL, câu trả lời khác mà tôi đã tham chiếu là câu trả lời đúng, vì người dùng phải xem trong nhật ký lỗi để xem mật khẩu gốc được tạo ngẫu nhiên.
Mike Brant

114

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.


10
Chỉ cần những gì tôi cần ... nhưng không phải ai cũng có phiên bản 5.5 của máy chủ. sử dụng dpkg --get-selections | grep sqlđể có được phiên bản của bạn
Balmipour

1
@Balmipour nên là lệnh tương đương để kiểm tra phiên bản sql trong Rhel 6.x
PrathamN

1
@Divz nên là lệnh nào để cấu hình lại máy chủ mysql trong Rhel / centos
PrathamN

@PrathamN Tôi chưa bao giờ sử dụng màu đỏ, nhưng việc tìm kiếm "phiên bản gói kiểm tra mũ đỏ" cung cấp cho tôi các lệnh như thế này: yum list installedthêm | grep sqlvào để chỉ lọc các gói SQL.
Balmipour

1
Khi tôi chạy lệnh này trong Mac OS X, tôi gặp lỗi này : sudo: dpkg-reconfigure: command not found. Bất kì lời đề nghị nào?
mOna 14/03/2016

90

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

Ngừng sử dụng MySQL

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'.


3
Xin vui lòng, KHÔNG theo cách đó! Câu trả lời của @ Divz an toàn hơn. Trích dẫn tài liệu về --skip-Grant-bảng: Đ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ì điều này không an toàn, [...] sử dụng --skip-grant-tableskết hợp với --skip-networkingđể ngăn khách hàng từ xa kết nối. oh, và cũng có thể, cái này không làm việc cho tôi. Đó là lý do tại sao tôi đến đây: p
Balmipour

1
Nếu bạn đi theo cách đó , có. Nó không hoạt động với tôi và theo dõi câu trả lời của @ Divz có vẻ dễ dàng hơn đối với tôi, dù sao thì --điều tôi muốn đề xuất là sử dụng dpkg --get-selections | grep mysql-server-để có phiên bản MySQL chính xác của bạn, sau đó đi tìm sudo dpkg-cấu hình lại mysql-server-5.x (thay thế 5 .x với phiên bản máy chủ của bạn, btw). Tôi đã nhận xét câu trả lời của @ Divz với độ chính xác này, nhưng nó bị che dấu bởi một số bình luận "cảm ơn".
Balmipour

4
cập nhật người dùng đặt xác thực_ chuỗi = mật khẩu ('1111') trong đó user = 'root';
Dejell

2
Điều này thực sự có hiệu quả ... các giải pháp khác vẫn cho tôi lỗi tương tự.
eddy147

2
Kể từ MySQL 5.7.6, cột Mật khẩu đã được đổi tên thành "xác thực chuỗi
IberoMedia

55

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 khiến tôi gặp 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 cho một từ vượt qua như thế này

Enter password: 

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


3
Hài hước rằng điều này đã giúp sau nhiều ngày nghiên cứu.
girish_vr

Rất vui được biết @girish_vr
XY-JOE

Đã làm cho tôi! Phiên bản máy chủ mysql của tôi là: Phiên bản máy chủ: 8.0.13 Máy chủ cộng đồng MySQL - GPL
kaspiotr

Điều này đã giúp, điều vô cùng ngu ngốc về phía MySQL mà tôi vẫn không thể tin được.
wscourge

39

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 -u root -p #Login to root user with some password

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

16
Điều này có vẻ đầy hứa hẹn, nhưng nó không làm việc cho tôi. Khi tôi chạy, sudo grep 'temporary password' /var/log/mysqld.logtôi nhận được/var/log/mysqld.log: No such file or directory
Eric Hepperle - CodeSlayer2010

4
Hãy thử sudo grep 'temporary password' /var/log/mysql/error.log. Giải pháp @Lahiru làm việc cho tôi.
artemisian

17
Tôi đã thử sudo grep 'mật khẩu tạm thời' /var/log/mysql/error.log nhưng nó không trả về kết quả gì.
người học

2
Hãy thử shell> sudo grep 'password' /var/log/mysql/error.log. Làm việc cho tôi, nhưng tôi nhận được: root @ localhost được tạo với mật khẩu trống! Vui lòng xem xét tắt tùy chọn --initialize-không an toàn. Phiên bản mysql của tôi là: Ver 8.0.13 cho Linux trên x86_64 (Máy chủ cộng đồng MySQL - GPL)
kaspiotr

1
@EnginYilmaz tại sao bạn lại đề xuất một lệnh mysql khi vấn đề là mysql thậm chí không truy cập được?
R-obert

34

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

1
Cảm ơn bạn. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)cũng đang làm phiền máy chủ của tôi 'mysqld_safe' cũng thất bại cho đến khi tôi thực hiện 'killall mysqld' SAU Bước 1.
Marcos

Xin vui lòng, KHÔNG theo cách đó! Câu trả lời của @ Divz an toàn hơn. Trích dẫn tài liệu về --skip-Grant-bảng: Đ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ì điều này không an toàn, [...] sử dụng --skip-grant-tableskết hợp với --skip-networkingđể ngăn khách hàng từ xa kết nối. oh, và cũng có thể, cái này không làm việc cho tôi. Đó là lý do tại sao tôi đến đây: p
Balmipour

2
Nó mang lại cho tôi: ERROR 1054 (42S22): Cột 'mật khẩu' không xác định trong 'danh sách trường'
MD. Mohiuddin Ahmed

Kiểm tra câu trả lời của @Anshu cách xử lý này an toàn hơn
Mugoma J. Okomba

1
@ MD.MohiuddinAhmed Bạn phải sử dụng phiên bản mới hơn của máy chủ mysql. Tham khảo câu trả lời này: stackoverflow.com/a/31122246/6242649
Udayraj Deshmukh

32

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 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
    tệp ổ cắm UNIX 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 socket
    '/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

2
Trong trường hợp của tôi, tôi phải sửa đổi Bước 6 làsudo kill `sudo cat /var/run/mysqld/mysqld.pid`
kolunar

1
Đây là một trong những làm việc cho tôi. Trong bước 5, hãy thực hiện 1. sử dụng USER 2. Để thay đổi mật khẩu, hãy sử dụng -> cập nhật người dùng đặt xác thực_ chuỗi = PASSWORD ("mật khẩu") trong đó User = 'root';
Bikram

1
Đây là giải pháp tốt nhất, tôi có thể tìm hiểu. Sử dụng "5.7.26 Máy chủ cộng đồng MySQL (GPL)" trên macOS Mojave trên mô hình MBP '15. Tôi đã phải dừng Mysql khỏi System Preference, rồi theo bước 2 và bước 5. Và sau đó tôi phải giết tiến trình MySQL bằng cách tra cứu PID bằng cách sử dụng ps -ef | grep mysql.
cspider

12

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ó đã có tác dụng. Để cài đặt mysql sau khi gỡ cài đặt, tôi nghĩ rằng kỹ thuật số đại dương 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


12

Đang sử dụng Ubuntu-16.04: đã cài đặt mysql - 5.7. Tôi có cùng một vấn đề: Đă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 (để có được phiên bản của 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, chỉ cần gõ mysql không hoạt động. Ở TẤT CẢ. Tôi đề nghị làm cho nó một thói quen để sử dụng mysql -u <name> -p.


8

chỉ cần nhập thiết bị đầu cuối

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


8

Nếu không có câu trả lời nào khác phù hợp với bạn và bạ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 -u root 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;

#kill mysqld_safe process
sudo service mysql restart

#Now you can use your new password to login to your Server
mysql -u root -p

#take note for remote access you should create a remote user and then grant all privileges to that remote user

Đây là câu trả lời đúng cho mysql 5.7 trong Ubuntu 18.04 LTS. Cảm ơn
Dhiraj

Đối với tất cả địa chỉ từ xa: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf -> bind-address = 0.0.0.0
Mehdi

7

Tôi đã cài đặt MySQL là người dùng root ( $SUDO) và gặp vấn đề tương tự
Đây là cách tôi khắc phục nó-

  1. $ sudo cat /etc/mysql/debian.cnf

Điều này sẽ hiển thị chi tiết như-

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

Ở trên chúng ta có thể thấy mật khẩu chỉ là chúng ta sẽ sử dụng(GUx0RblkD3sPhHL5) nó trong lời nhắc-

  1. mysql -u debian-sys-maint -p Enter password:
    hiện cung cấp mật khẩu ( GUx0RblkD3sPhHL5 ).

  2. Bây giờ exittừ MySQL và đăng nhập lại như-

    mysql -u root -p Enter password:
    Bây giờ cung cấp mật khẩu mới. Đó là tất cả, chúng tôi có mật khẩu mới để sử dụng thêm.

Nó làm việc cho tôi, hy vọng giúp bạn quá!


6

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

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');

1
Cung cấp: ERROR 1131 (42000): Bạn đang sử dụng MySQL với tư cách là người dùng ẩn danh và người dùng ẩn danh không được phép thay đổi mật khẩu
MD. Mohiuddin Ahmed

1
Nó bình thường. Người dùng của bạn là ẩn danh. Bạn cần phải thực thi> mysql -u {your_username}
d.danailov 7/12/2015

3

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. Đi đến 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> nhanh chóng.
  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 ĐƯỜNG của bạn

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

Hy vọng nó giúp.


3

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 lời nhắc mật khẩu đang nhấp nháy


2

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

1

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 mật khẩu 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 quyền; mysql thoát


1

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

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ướng dẫn tham khảo Unix và Unix giống như hệ thống 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 ý] Việc thực thi 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' (Errcode: 13 - Quyền bị từ chối) 2016-08-10T11: 41: 20.422096Z 0 [LRI] Hủy bỏ

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 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

Nếu bạn có MySQL là một phần của hình ảnh Docker (giả sử trên cổng 6606) và cài đặt Ubuntu (trên cổng 3306) chỉ định cổng là không đủ:

mysql -u root -p -P 6606

sẽ ném:

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

vì nó đang cố gắng kết nối với localhost theo mặc định, chỉ định IP cục bộ của bạn khắc phục sự cố:

mysql -u root -p -P 6606 -h 127.0.0.1

0

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

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

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

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

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 đều 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

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

Tôi gặp vấn đề này với Ubuntu 18.04 LTS và Mysql Server phiên bản 5.7.27-0ubfox0.18.04.1 (Ubuntu).

Giải pháp của tôi là (chạy bằng root với sudo -i)

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES ;
EOSQL

mysqladmin -u root password new_pw

0

Tôi cũng gặp một vấn đề tương tự, những gì tôi đã làm là

1) Mở cmd của bạn

2) Điều hướng đến C: \ Tệp chương trình \ MySQL \ MySQL Server 8.0 \ bin> (trong đó MySQL Server 8.0 có thể khác nhau tùy thuộc vào máy chủ bạn đã cài đặt)

3) Sau đó đặt lệnh sau mysql -u root -p

4) Tôi sẽ nhắc nhập mật khẩu ... chỉ cần nhấn enter, vì đôi khi mật khẩu bạn đã nhập trong khi cài đặt bị thay đổi thành trống.

bây giờ bạn có thể chỉ cần truy cập cơ sở dữ liệu

Giải pháp này hiệu quả với tôi trên nền tảng windows


0

Mặc dù câu trả lời hàng đầu (w / mysqladmin) hoạt động trên mac 10.15, nhưng nó không hoạt động trên Ubuntu. Sau đó đã thử nhiều tùy chọn khác bao gồm khởi động an toàn cho mysql, không có tùy chọn nào hoạt động. Do đó thêm một phản ứng mới.

Ít nhất là đối với phiên bản tôi nhận được 5.7.28-0ubuntu0.18.04.4câu trả lời còn thiếu IDENTIFIED WITH mysql_native_password. 5.7.28 là mặc định trên LTS hiện tại và do đó sẽ là mặc định cho hầu hết các hệ thống mới (cho đến ngày 20.04 LTS xuất hiện).

Đã tìm thấy: https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server và hiện được áp dụng

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

mà không làm việc


0

Lỗi mà tôi gặp phải là

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

đó là một vấn đề với cổng chạy trên.

Theo mặc định, mysql đang chạy port 3306.

Bạn có thể kiểm tra xem bằng cách chạy

  • trong hệ thống 32 bit:

    sudo /opt/lampp/manager-linux.run

  • trong hệ thống 64 bit:

    sudo /opt/lampp/manager-linux-x64.run

và bấm vào configurenút

bảng điều khiển xampp

Trong trường hợp của tôi, cổng đã chạy trên 3307 và lệnh tôi đã sử dụng là

mysql -u root -p -P 3307 -h 127.0.0.1

0

Trong trường hợp của tôi, tôi đã cố gắng vượt qua lệnh cho một container. Trong trường hợp đó chỉ có từ đầu tiên được giải thích. Đảm bảo rằng bạn không chạy:

mysql

như trái ngược với:

mysql -uroot -ppassword schemaname

có lẽ hãy thử trích dẫn:

'mysql -uroot -ppassword schemaname'
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.