Đặt mật khẩu người dùng root MySQL trên OS X


235

Tôi vừa cài đặt MySQL trên Mac OS X. Bước tiếp theo là thiết lập mật khẩu người dùng root, vì vậy tôi đã làm điều này tiếp theo:

  1. Khởi chạy ứng dụng đầu cuối để truy cập dòng lệnh Unix.
  2. Theo lời nhắc Unix tôi đã thực thi các lệnh sau:

    $ cd /usr/local/mysql/bin
    $ ./mysqladmin -u root password 'password'

Nhưng, khi tôi thực hiện lệnh

$ ./mysql -u root, đây là câu trả lời:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 224
Server version: 5.5.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Tôi có thể vào mysqldòng lệnh mà không cần mật khẩu!

Tại sao lại thế này?

Câu trả lời:


320

Hãy thử lệnh FLUSH PRIVILEGESkhi bạn đăng nhập vào thiết bị đầu cuối MySQL. Nếu điều đó không làm việc, hãy thử bộ lệnh sau trong khi ở trong thiết bị đầu cuối MySQL

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Thay đổi NEWPASSWORD với bất kỳ mật khẩu nào bạn muốn. Nên đặt tất cả!

Cập nhật : Kể từ MySQL 5.7, passwordtrường đã được đổi tên authentication_string. Khi thay đổi mật khẩu, sử dụng truy vấn sau để thay đổi mật khẩu. Tất cả các lệnh khác vẫn giữ nguyên:

mysql> UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';

Cập nhật : Vào ngày 8.0.15 (có thể đã có trước phiên bản đó), chức năng PASSWORD () không hoạt động, như được đề cập trong các bình luận bên dưới. Bạn phải sử dụng:

UPDATE mysql.user SET authentication_string='password' WHERE User='root';


24
Trong MySQL 5.7 trở đi, tên cột đã thay đổi. Bạn sẽ cần phải sử dụng UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';thay thế.
Carlos P

Cảm ơn cho những người đứng đầu lên. Tôi sẽ chỉnh sửa câu trả lời của mình để phản ánh phù hợp.
Scott

8
Có vẻ như hàm PASSWORD () không được dùng nữa và bạn chỉ nên đặt 'password'phía bên phải của đẳng thức
kvn

6
Nếu bạn không thể đăng nhập, làm thế nào để giúp đỡ?
Jake N

11
sau khi làm theo các bước này Khi tôi cố gắng đăng nhập lại bằng mật khẩu mới của mình, tôi nhận đượcERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Þaw

197

Nếu bạn không nhớ mật khẩu bạn đã đặt cho root và cần đặt lại mật khẩu, hãy làm theo các bước sau:

  1. Dừng máy chủ mysqld, điều này thay đổi mỗi lần cài đặt
  2. Chạy máy chủ ở chế độ an toàn với bỏ qua đặc quyền

sudo mysqld_safe --skip-grant-tables;

  1. Trong một cửa sổ mới kết nối với cơ sở dữ liệu, đặt mật khẩu mới và xóa quyền & thoát:

mysql -u root

Đối với MySQL cũ hơn MySQL 5.7, hãy sử dụng:

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

Đối với MySQL 5.7+ sử dụng:

USE mysql;

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

Làm mới và thoát:

FLUSH PRIVILEGES;

\q

  1. Dừng máy chủ chế độ an toàn và khởi động lại máy chủ thông thường của bạn. Mật khẩu mới sẽ hoạt động ngay bây giờ. Làm việc như một cơ duyên đối với tôi :)

4
Đó là hoàn hảo cảm ơn bạn! Trên Mac OSx Mavericks (2014) sử dụng sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Chris Adams

2
passwordcần phải có authentication_stringngay bây giờ
zx1986

Sau MySQL 5.7, nó sẽ UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';giống như @Scott đã nói.
zx1986

Cảm ơn sẽ thêm điều đó
radtek

1
Trên MacOSX khi mySQL được cài đặt với các "Sở thích 'Pane' tùy chọn (Apple Menu -> System Preferences ...), tôi thấy rằng tôi đầu tiên phải dừng mySQL bằng cách sử dụng khung ưu đãi để hoàn tất bước 1 ở trên sử dụng. sudo killKhông hoạt động như Mac OSx sẽ tự động khởi chạy lại một msql mới ngay lập tức. Khi tôi dừng mysql bằng khung tùy chọn, tôi có thể chạy thủ côngmysqld_safe --skip-grant-tables
chập chững vào

85

Khi bạn đã cài đặt MySQL, bạn sẽ cần thiết lập mật khẩu "root". Nếu bạn không thiết lập mật khẩu gốc, thì, không có mật khẩu gốc và bạn không cần mật khẩu để đăng nhập.

Vì vậy, điều đó đang được nói, bạn cần phải thiết lập một mật khẩu root.

Sử dụng thiết bị đầu cuối nhập như sau:

Cài đặt: Đặt mật khẩu người dùng root:

/usr/local/mysql/bin/mysqladmin -u root password NEW_PASSWORD_HERE

Nếu bạn đã mắc lỗi hoặc cần thay đổi mật khẩu gốc, hãy sử dụng như sau:

Thay đổi mật khẩu root:

cd /usr/local/mysql/bin/
./mysql -u root -p
> Enter password: [type old password invisibly]

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

5
Đối với những người có MySQL 5.7, bạn nên sử dụng update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';thay vì sử dụngset password=...
pdm

66

Các hướng dẫn được cung cấp trong trang web mysql rất rõ ràng, hơn các đề cập ở trên

  1. $ sudo /usr/local/mysql/support-files/mysql.server stop
  2. $ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
  3. /usr/local/mysql/bin/mysql
  4. mysql RIÊNG TƯ;
  5. mysql ALTER USER 'root' @ 'localhost' được xác định bởi 'MyNewPass';
  6. mysql exithoặc Ctrl + z
  7. $ sudo /usr/local/mysql/support-files/mysql.server stop
  8. $ sudo /usr/local/mysql/support-files/mysql.server start
  9. /usr/local/mysql/support-files/mysql -u root -p
  10. Nhập mật khẩu mới, tức là MyNewPass

Tham khảo: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


2
trong mac os 10.12.6, nó báo lỗi sau lệnh thứ 2 LRI ! Máy chủ thoát mà không cập nhật tệp PID (/usr/local/mysql/data/myhostname.pid).
diEcho

Cảm ơn đã chỉ ra nơi để tìm tài liệu. Có một chút khó hiểu trên mac khi bạn cũng có thể sử dụng sudo launchctl unload -F /L Library / LaunchDaemons / com.oracle.oss.mysql.mysqld.plist và sudo launchctl unload -F /L Library / LaunchDaemons .mysql.mysqld.plist dừng và khởi động mysql. Sử dụng sudo /usr/local/mysql/support-files/mysql.server stop có vẻ như là một cách tiếp cận tốt hơn.
Daniel

59
  1. Dừng máy chủ mysqld.

    • Mac OSX: System Preferences > MySQL>Stop MySQL Server
    • Linux (Từ thiết bị đầu cuối): sudo systemctl stop mysqld.service
  2. Khởi động máy chủ ở chế độ an toàn với bỏ qua đặc quyền

    • Từ thiết bị đầu cuối: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Trong cửa sổ terminal mới :

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Điều này sẽ mở dòng lệnh mysql. Từ đây nhập:

    • UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';

    • FLUSH PRIVILEGES;

    • quit

  5. Dừng máy chủ mysqld một lần nữa và khởi động lại nó ở chế độ bình thường.

    • Mac OSX (Từ thiết bị đầu cuối): sudo /usr/local/mysql/support-files/mysql.server restart
    • Thiết bị đầu cuối Linux: sudo systemctl restart mysqld

1
Để chạy 5.7,23 trên High Sierra, điều này hoạt động hoàn hảo. Cảm ơn.
Daniel

Trong MySQL 8.0.11, chức năng thiết lập trong bước 4 đã bị xóa. Bạn kiểm tra ở đây, cái này đã hoạt động. stackoverflow.com/a/52579886/621951
Günay Gültekin

22

Đối với Mysql 5.7 mới vì một số lý do, các lệnh bin của Mysql không được đính kèm với trình bao:

  1. Khởi động lại máy Mac sau khi cài đặt.

  2. Bắt đầu Mysql:

    Tùy chọn hệ thống> Mysql> Nút bắt đầu

  3. Đi đến thư mục cài đặt Mysql trong thiết bị đầu cuối:

    $ cd /usr/local/mysql/bin/

  4. Truy cập vào Mysql:

    $ ./mysql -u root -p

và nhập mật khẩu ban đầu để cài đặt.

  1. Trong thiết bị đầu cuối thay đổi mật khẩu Mysql:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';


16

Trong terminal, viết mysql -u root -pvà nhấn Return. Nhập mật khẩu mysql hiện tại mà bạn phải ghi lại. Và đặt mật khẩu SET PASSWORD = PASSWORD('new_password');

Vui lòng tham khảo tài liệu này ở đây để biết thêm chi tiết.


10

Nếu bạn quên mật khẩu gốc của MySQL, không thể nhớ hoặc muốn phá vỡ trong .. bạn có thể đặt lại mật khẩu cơ sở dữ liệu mysql từ dòng lệnh trong Linux hoặc OS X miễn là bạn biết mật khẩu người dùng gốc của hộp bạn đang trên:

(1) Dừng MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

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

sudo mysqld_safe --skip-grant-tables

(3) Đâ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

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

Trong lệnh CẬP NHẬT ở trên, chỉ cần thay thế 'mật khẩu' bằng mật khẩu mới của riêng bạn, đảm bảo giữ nguyên dấu ngoặc kép

(4) Lưu và khá

FLUSH PRIVILEGES;

\q

(5) Bắt đầu MySQL

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

5

Khi tôi cài đặt OS X Yosemite, tôi gặp vấn đề với Mysql. Tôi đã thử rất nhiều phương pháp nhưng không có phương pháp nào hiệu quả. Tôi thực sự tìm thấy một cách khá dễ dàng. Thử thứ này đi.

  1. Đăng nhập đầu tiên từ thiết bị đầu cuối từ đặc quyền su.

sudo su

  1. dừng mysql

sudo /usr/local/mysql/support-files/mysql.server stop

  1. bắt đầu ở chế độ an toàn:

sudo mysqld_safe --skip-grant-tables

  1. mở một thiết bị đầu cuối khác, đăng nhập như đặc quyền su hơn, đăng nhập mysql mà không cần mật khẩu

mysql -u root

  1. thay đổi mật khẩu

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

  1. đặc quyền tuôn ra

FLUSH PRIVILEGES;

  1. Bạn đã xong

Cảm ơn bạn rất nhiều. Tôi đã vật lộn với điều này một chút. Đây có phải là một điều mới trên các phiên bản mới nhất của mysql?
jpbourbon



3

Tôi nghĩ rằng điều này sẽ làm việc :

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD'

(Lưu ý rằng bạn có thể nên thay thế root bằng tên người dùng của mình nếu không phải root)


2

Dừng máy chủ MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

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

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

Thay đổi mật khẩu root

/usr/local/mysql/bin/mysql -u root

use mysql;
UPDATE user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE user='root';
FLUSH PRIVILEGES;
exit

Kiểm tra

Chạy /usr/local/mysql/bin/mysql -u root

Bây giờ nhập mật khẩu mới để bắt đầu sử dụng MySQL.


2

Đây là những gì chính xác làm việc cho tôi:

  1. Đảm bảo không có quá trình MySQL nào khác đang chạy. Để kiểm tra điều này, hãy làm như sau:

     a.From the terminal, run this command:
           lsof -i:3306 
       If any PID is returned, kill it using kill -9 PID
     b. Go To System Preferences > MySQL > check if any MySQL instances 
        are running, stop them.
  2. Bắt đầu MySQL bằng lệnh:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Mật khẩu cho mọi người dùng được lưu trữ trong bảng mysql.user dưới các cột Người dùng và chuỗi xác thực tương ứng. Chúng tôi có thể cập nhật bảng dưới dạng:

    UPDATE mysql.user SET authentication_string='your_password' where User='root'

2

macOS 10.14+ với 5.7.26 được cài đặt từ trình cài đặt Mac OSX DMG.

Khi cố gắng sử dụng lệnh UPDATE được đăng bởi người dùng khác sẽ dẫn đến lỗi sau:

LRI 1820 (HY000): Bạn phải đặt lại mật khẩu bằng câu lệnh ALTER USER trước khi thực hiện câu lệnh này.

Sao chép mật khẩu đã được trình bày cho thiết bị đầu cuối mở Trình cài đặt và thực hiện các bước sau:

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORDHERE';

2

Hãy thử điều này trong thiết bị đầu cuối: /usr/local/bin/mysql_secure_installation


2

Để tham khảo MySQL 8.0.15 +, hàm password () không khả dụng. Sử dụng lệnh dưới đây.

Vui lòng sử dụng

UPDATE mysql.user SET authentication_string='password' WHERE User='root';

1

Nếu bạn quên mật khẩu hoặc muốn đổi nó thành mysql của bạn:

  1. bắt đầu thiết bị đầu cuối của bạn và nhập:
sudo su
  1. Nhập pass cho hệ thống của bạn
  2. Dừng mysql của bạn:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Để lại cửa sổ này MỞ, chạy cửa sổ đầu cuối thứ hai và nhập vào đây:
mysql -u root
  1. Và thay đổi mật khẩu của bạn cho mysql:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

trong đó "new_password" - thẻ mới của bạn. Bạn không cần pass cũ cho mysql.

  1. Rửa, bỏ và kiểm tra thẻ mới của bạn:
FLUSH PRIVILEGES;
  1. Đóng tất cả các cửa sổ và kiểm tra thẻ mới của bạn cho mysql. Chúc may mắn.

1

Nhiều thứ đã thay đổi đối với MySQL 8. Tôi đã tìm thấy bản sửa đổi sau đây của tài liệu "Cách đặt lại mật khẩu gốc" của MySQL 8.0 hoạt động với Mac OS X.

Tạo một tệp tạm thời $HOME/mysql.root.txtvới SQL để cập nhật mật khẩu gốc:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new-password>';

Điều này sử dụng mysql_native_passwordđể tránh lỗi xác thực 'cacheing_sha2_password' của plugin xác thực , tôi nhận được nếu tôi bỏ qua tùy chọn này.

Dừng máy chủ, bắt đầu với một --init-filetùy chọn để đặt mật khẩu gốc, sau đó khởi động lại máy chủ:

mysql.server stop mysql.server start --init-file=$HOME/mysql.root.txt mysql.server stop mysql.server start


1

Hãy để chúng tôi thêm cách giải quyết này hoạt động trên máy tính xách tay của tôi!

Máy Mac có Osx Mojave 10.14.5

Mysql 8.0.17 đã được cài đặt với homebrew

  • Tôi chạy lệnh sau để xác định vị trí đường dẫn của mysql

    brew info mysql

  • Khi đường dẫn được biết đến, tôi chạy nó:

    /usr/local/Cellar/mysql/8.0.17/bin/mysqld_safe --skip-grant-table

  • Trong một thiết bị đầu cuối khác tôi chạy:

    mysql -u root

  • Trong thiết bị đầu cuối đó, tôi đã thay đổi mật khẩu root bằng cách sử dụng:

    update mysql.user set authentication_string='NewPassword' where user='root';

  • và để kết thúc tôi chạy:

    FLUSH PRIVILEGES;

Và voila mật khẩu đã được đặt lại.

Người giới thiệu :


1

Bạn có thể tắt thủ công mysql trên máy Mac bằng cách nhấp vào menu Apple và mở Tùy chọn hệ thống. Chọn bảng điều khiển tùy chọn của MySQL MySQL, sau đó nhấp vào nút Dừng máy chủ MySQL để chặn máy chủ MySQL trên máy Mac.

Sau khi bạn dừng mysql, bạn sẽ cần phải làm theo các bước sau.

  • Bạn sẽ cần khởi động mysql ở chế độ bỏ qua bảng

$ sudo /usr/local/mysql/support-files/mysql.server bắt đầu --skip-Grant-bảng

  • Trong chính thiết bị đầu cuối của bạn, hãy nhập lệnh này để XÁC NHẬN RIÊNG TƯ

/ usr / local / mysql / bin / mysql mysql> FLIV PRIVILEGES;

  • Bây giờ bạn cần thay đổi mật khẩu người dùng

mysql ALTER USER 'root' @ 'localhost' được xác định bởi 'newpassword';

thoát

Sau đó, bạn có thể vào menu  Apple và mở System Preferences. Chọn bảng điều khiển tùy chọn của MySQL MySQL, sau đó nhấp vào nút Dừng máy chủ MySQL để chặn máy chủ MySQL trên máy Mac.

Cuối cùng, bạn có thể một lần nữa vào menu Apple và mở System Preferences. Chọn bảng điều khiển tùy chọn của MySQL MySQL, sau đó nhấp vào nút Khởi động máy chủ MySQL của MySQL để khởi động Máy chủ MySQL trên máy Mac.

Mong rằng sẽ giúp


1

Không có ý kiến ​​trước nào giải quyết vấn đề trên máy Mac của tôi. Tôi đã sử dụng các lệnh dưới đây và nó đã làm việc.

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -u root

0
mysqld_safe --skip-grant-tables
mysql -u root
UPDATE mysql.user SET authentication_string='yourpasswd' WHERE User='root';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Tôi bằng cách nào đó cần phải làm điều này mỗi khi Macbook của tôi khởi động lại. Đăng bài này để tham khảo cá nhân, hy vọng nó cũng sẽ giúp người khác.

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.