Không thể thiết lập lại mật khẩu root của MySQL, đã thử mọi thứ


9

Chà, trước tiên hãy làm rõ rằng tôi đã đọc tất cả các câu hỏi từ Hỏi Ubuntu về vấn đề này và tôi đã làm theo tất cả các bước từ các tài liệu chính thức:

help.ubfox.com

dev.mysql.com

Tôi đang sử dụng Ubuntu 16.04.1 LTS

Vì vậy, trước khi ai đó gợi ý bất cứ điều gì mà tôi có thể đã thử, tôi sẽ trình bày những gì tôi đã làm:

root@localhost:/# sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

MySQL dừng lại chính xác.

root@localhost:/# sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

Ở đây tôi không biết điều này có hiệu quả hay không, vì vậy tôi vẫn làm theo các bước.

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

Có vẻ như nó không hoạt động, vì dịch vụ chưa được bắt đầu. Vì tôi không thể tiếp tục với các bước tiếp theo, tôi thử phương pháp khác (thanh lọc).

Sau khi sử dụng:

sudo apt-get --purge remove
sudo apt-get install

Tôi thử bước tiếp theo:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

Vì nó cũng không hoạt động nên tôi đã thử các phương pháp khác được đề cập trên web mysql:

Vì vậy, tôi giết quá trình mysql như được chỉ ra ở đó và sau đó tôi sử dụng

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

Bây giờ là khi tôi đã thoát khỏi các tùy chọn, vì vậy tôi cũng thử một phương pháp khác được đề cập ở đây trên Hỏi Ubuntu:

root@localhost:/# sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

Và bây giờ tôi thực sự không còn lựa chọn nào khác, vì vậy mọi đề xuất đều được chào đón.

Câu trả lời:


16

Tôi đã có cùng một vấn đề, và tôi đã giải quyết nó bằng cách thực hiện dòng này:

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld

trước khi thực hiện dòng này:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

Đối với tôi, những bước này làm việc tốt hơn.

Tôi nghĩ rằng có một cách sạch hơn để làm điều này, nhưng đối với tôi, đó là một cách giải quyết nhanh chóng và hiệu quả.


1
thx, điều đó đã tạo ra mánh khóe;)
Ilovelinux

Nó xảy ra trên mysql 5.7. Khi bạn dừng dịch vụ mysql / var / run / mysqld bị xóa và được tạo lại khi bạn bắt đầu lại dịch vụ.
Capy

1

Tôi không thể cài đặt mysql cho dù tôi đã thử gì, cuối cùng tôi chỉ cần thử và đặt lại mật khẩu.

Tôi đã phải đi tuyến đường này trên Ubuntu 16.04.1 LTS. Tôi đã dành một giờ hoặc hơn để thử tất cả các đề xuất khác từ trang web MySql cho tất cả mọi thứ trên SO cũng như Hỏi & Đáp của AskUb Ubuntu, cuối cùng tôi đã làm cho nó hoạt động với:

Lưu ý: trong khi nó hiển thị Nhập mật khẩu cho người dùng root, tôi không có mật khẩu gốc nên tôi không có mật khẩu gốc chỉ cần nhập cùng một mật khẩu để được sử dụng làm mật khẩu mới.

Lưu ý: không có /var/log/mysqld.log chỉ /var/log/mysql/error.log

Cũng lưu ý rằng điều này không hiệu quả với tôi:
sudo dpkg-reconfigure mysql-server-5.7

Cũng không:
sudo dpkg-reconfigure --force mysql-server-5.5

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

Sau đó:

  1. giết pid mysqld hiện tại
  2. chạy mysqld với sudo / usr / sbin / mysqld &
  3. run / usr / bin / mysql_secure_installation

    Kết quả đầu ra từ mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Đảm bảo việc triển khai máy chủ MySQL.

    Nhập mật khẩu cho người dùng root:

    Có thể sử dụng PASSWORD PLUGIN để kiểm tra mật khẩu và cải thiện bảo mật. Nó kiểm tra độ mạnh của mật khẩu và cho phép người dùng chỉ đặt những mật khẩu đủ an toàn. Bạn có muốn thiết lập plugin VALIDATE PASSWORD không?

    Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không: không Sử dụng mật khẩu hiện có để root. Thay đổi mật khẩu cho root? ((Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y

    Mật khẩu mới:

    Nhập lại mật khẩu mới: Theo mặc định, cài đặt MySQL có người dùng ẩn danh, cho phép mọi người đăng nhập vào MySQL mà không cần phải tạo tài khoản người dùng cho họ. Điều này chỉ dành cho thử nghiệm và để cài đặt suôn sẻ hơn một chút. Bạn nên loại bỏ chúng trước khi chuyển sang môi trường sản xuất.

    Xóa người dùng ẩn danh? (Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y Thành công.

    Thông thường, root chỉ nên được phép kết nối từ 'localhost'. Điều này đảm bảo rằng ai đó không thể đoán mật khẩu gốc từ mạng.

    Không cho phép đăng nhập root từ xa? (Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y Thành công.

    Theo mặc định, MySQL đi kèm với một cơ sở dữ liệu có tên 'test' mà bất kỳ ai cũng có thể truy cập. Điều này cũng chỉ nhằm mục đích thử nghiệm và nên được gỡ bỏ trước khi chuyển sang môi trường sản xuất.

    Xóa cơ sở dữ liệu kiểm tra và truy cập vào nó? (Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y

    • Bỏ cơ sở dữ liệu kiểm tra ... Thành công.

    • Xóa đặc quyền trên cơ sở dữ liệu thử nghiệm ... Thành công.

    Tải lại các bảng đặc quyền sẽ đảm bảo rằng tất cả các thay đổi được thực hiện cho đến nay sẽ có hiệu lực ngay lập tức.

    Tải lại bảng đặc quyền bây giờ? (Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y Thành công.

    Tất cả đã được làm xong!


0

Tôi đã có cùng một vấn đề và giải quyết nó với:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(Ở đây, authentication_stringgiữ trường mật khẩu.)

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.