mysql_install_db: Cách đặt mật khẩu gốc


7

mysql 5.6 dường như có một tùy chọn --random-password mới cho mysql_install_db, cho phép tôi khám phá mật khẩu gốc: http://dev.mysql.com/doc/refman/5.6/en/mysql-install-db.html# tùy chọn_mysql_install_db_random-mật khẩu

Nhưng tôi có thể làm gì với mysql 5.5? Tài liệu cho thấy mật khẩu gốc nên trống, nhưng dường như tôi không thể kết nối mà không có mật khẩu (hoặc mật khẩu trống), vì vậy tôi không thể đặt mật khẩu gốc thực sự:

Ví dụ:

Tôi khởi tạo cơ sở dữ liệu như vậy:

$ mysql_install_db --no-defaults --user=murrayc --datadir=/tmp/testmysql/data

Tôi khởi động máy chủ như vậy:

$ mysqld_safe --no-defaults --user=murrayc --port=3308 --datadir='/tmp/testmysql/data' --socket='/tmp/testmysql/mysqld.sock' --pid-file='/tmp/testmysql/pid'

Nhưng khi tôi cố gắng đặt mật khẩu gốc như vậy (tôi tin rằng - người dùng trong trường hợp này đề cập đến người dùng mysql chứ không phải người dùng linux):

$ mysqladmin --no-defaults --port=3308 --user=root --password='' password 'somenewpassword'

Tôi nhận được lỗi này:

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

Câu trả lời:


6

Khi cài đặt, root@localhostkhông có mật khẩu.

Bạn sẽ có thể kết nối mà không cần mật khẩu bằng cách thực hiện điều này:

$ mysql -uroot

Hãy thử như sau:

$ mysqladmin --no-defaults --port=3308 --user=root password 'somenewpassword'

hoặc bạn có thể làm theo cách cứng đầu:

$ service mysql restart --skip-grant-tables --skip-networking
$ mysql -e"UPDATE mysql.user SET password=password('somenewpassword') WHERE user='root'"
$ service mysql restart
$ mysql -uroot -p

CẬP NHẬT 2013-01 / 02 16:47 EDT

Tôi xin lỗi, tôi đã bỏ qua số cổng.

Đây là vấn đề: bạn không thể sử dụng root @ localhost đối với cổng không phải là 3306 trừ khi bạn sử dụng giao thức TCP / IP. Vui lòng thử điều này:

$ mysqladmin --no-defaults --port=3308 --user=root --protocol=tcp password 'somenewpassword'

Không, đó là điểm chính. Không thể đăng nhập mà không có mật khẩu: 10:41:12 ~$ mysql -uroot --port=3311 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Các lệnh như "khởi động lại dịch vụ mysql" dành cho quy trình mysql thông thường của hệ thống. Tôi đang khởi tạo một cơ sở dữ liệu riêng biệt và bắt đầu một cá thể mysqld riêng biệt.
m Hurc

Rất cám ơn đã cập nhật. Tôi có thể không bao giờ có số liệu rằng nó cần tùy chọn --protatio.
m Hurc

-2

Hãy cố gắng chạy mkdir -p var tmptrước mysql_install_db.

tạo db mysql thất bại trong tình huống của tôi.

Nếu var và tmp không được tạo trước đó và sử dụng chúng làm ký tự của mysql_install_db, chúng ta có thể bắt đầu mysqld thành công. Hãy thử sử dụng mysql hoặc mysqladmin kết nối với máy chủ, tôi đã gặp lỗi: truy cập bị từ chối cho 'root' @ 'localhost'

Có lẽ nguyên nhân của câu hỏi là giống với tôi.


1
Hãy thử chạy nó từ đâu / trong thư mục nào? Lỗi gì được cho là để giải quyết?
Mat

dựa trên mysql.
zhuhongk

Vui lòng chỉnh sửa nó vào câu trả lời của bạn. Ngoài ra tôi không chắc tôi hiểu câu thứ hai của bạn. Bạn có thể làm rõ? Cảm ơn.
Mat
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.