Mật khẩu root mysql homebrew của MacOSX


116

Vì một số lý do MySQL ngừng cấp quyền truy cập cho root. Đã gỡ cài đặt và cài đặt lại bằng Homebrew. Cài đặt mới, bảng mới nhưng khi tôi vào

mysql -u root -p

Tôi gặp lỗi này:

Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu: KHÔNG)

Tôi đã cài đặt lại MySQL năm lần nhưng nó vẫn yêu cầu mật khẩu. Làm cách nào để sửa lỗi này?


Gần như có một câu hỏi chính xác trong superuser. Làm theo các bước sau: superuser.com/a/400345
Icarus

13
Chỉ cần chạy mysql_secure_installationvà trả lời các câu hỏi, đơn giản
Abhinav Singh

8
Lệnh mysql_secure_installation nhắc nhập mật khẩu gốc; nếu bạn đã đặt và quên nó, thủ tục này sẽ không giúp ích gì.
JohnG

1
Nếu brew cài đặt MySQL 5.7, hãy làm theo các bước sau: stackoverflow.com/a/33924648/133106
mrucci

FWIW mysql -u rootlàm việc ở đây ...
rogerdpack

Câu trả lời:


115

Chỉ cần chạy lệnh này ( NEWPASSmật khẩu của bạn ở đâu ):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

Tôi đã gặp lỗi tương tự và đã sửa nó theo cách này.


16
Đã làm cho tôi. Rõ ràng (có lẽ), ký hiệu đô la ($) phải được nhập như một phần của lệnh (nó không chỉ là một dấu nhắc shell).
hobs

3
Tôi khuyên bạn không nên bao gồm NEWPASS trong lệnh để tránh lưu trữ trong tệp lịch sử trình bao của bạn. Lệnh đó sẽ tự động yêu cầu đầu vào nếu bạn chạy nó mà không có pass nên không có lý do gì. :)
Levi Figueira

4
nếu sử dụng mariadb:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams

8
Không hoạt động với tôi, với mariadb (ngay cả với ghi chú @bryceadams): / usr / local / opt / mariadb / bin / mysqladmin: kết nối với máy chủ tại 'localhost' lỗi không thành công: 'Quyền truy cập bị từ chối đối với người dùng' root '@' localhost ' '
trainoasis

3
cho mariadb, nếu bạn bị từ chối quyền truy cập đối với người dùng:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
cập nhật

110

Không ai trong số này làm việc cho tôi. Tôi nghĩ rằng tôi đã có mysql ở đâu đó trên máy tính của mình nên một mật khẩu đã được đặt ở đó hay gì đó. Sau khi dành hàng giờ để thử mọi giải pháp ngoài kia, đây là điều đã hiệu quả với tôi:

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

tất cả tín dụng cho @Ghrua


6
các bài viết trước đó không hoạt động với tôi, nhưng bài viết này trong khi phá hoại hoạt động rất tốt.
Clay

1
cuối cùng khi bạn đã đăng nhập vào mysql, hãy sử dụng ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';để đặt mật khẩu gốc mới của bạn.
Martin Braun

Điều này làm việc cho tôi mà không xóa cơ sở dữ liệu hiện tại của tôi
Mwirabua Tim

Cuối cùng là một giải pháp làm việc thích hợp. @ 2020 MacOs catalina.
Mindaugas Kurlys

Điều này làm việc cho tôi khi giải pháp trước đó không. Cảm ơn bạn!
Les Brown

65

Trong trường hợp bạn vô tình đặt và quên mật khẩu gốc, và bạn không muốn xóa tất cả cơ sở dữ liệu của mình và bắt đầu lại vì bạn lười biếng và quên không có giải pháp sao lưu và bạn đang sử dụng bản cài đặt Homebrew khá gần đây (Mùa đông 2013), đây là các bước để đặt lại mật khẩu của bạn cho MySQL.

Dừng phiên bản MySQL hiện đang chạy

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Bây giờ hãy bắt đầu mysql bằng cách bỏ qua các bảng tài trợ và mạng

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

Lưu ý rằng nếu khi bạn chạy echo $ (brew --prefix mysql) và nó không phản hồi là "/ usr / local / opt / mysql" trong bash, bạn sẽ cần phải điều chỉnh đường dẫn cho phù hợp.

Khi bạn đã làm xong việc này, bây giờ bạn sẽ có một phiên bản MySQL không được bảo vệ đang chạy.

Đăng nhập và đặt mật khẩu

mysql -u root

Tại lời nhắc, hãy nhập lệnh MySQL sau để đặt mật khẩu mới cho người dùng có hiệu lực.

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

Nếu tất cả đều theo kế hoạch, nó sẽ nói:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

Thoát khỏi lời nhắc MySQL.

mysql> exit
Bye

Dừng máy chủ:

mysqladmin -u root shutdown

Bây giờ, hãy đặt lại trình nền khởi chạy để chúng ta có MySQL ở trạng thái sẵn sàng trở lại:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Xin chúc mừng. Bạn vừa đặt lại mật khẩu gốc mysql của mình. Hãy rót cho mình một ly cà phê và lấy một giải pháp dự phòng tại chỗ!


5
Để ngăn chặn các máy chủ MySQL không được bảo vệ sau khi thay đổi mật khẩu:mysqladmin -u root shutdown
Vebjorn Ljosa

9
Tôi vừa gặp vấn đề này và thấy câu trả lời này là gần nhất. Tôi đã nhận thấy rằng đó passwordkhông phải là một cột hợp lệ trong mysql 5.7.9. Thay vào đó tôi đã phải sử dụng authentication_stringthay thế. Phần còn lại của các hướng dẫn hoạt động hoàn hảo. Cảm ơn!
M. Scott Ford

5
Như M. Scott Ford đã nói, lệnh thích hợp là:update user set authentication_string=password('new_password_here') where user='root';
Panayotis,

3
Tôi đã phải chạy update mysql.user set authentication_string=password('none') where user='root';để nó hoạt động. (Giống như những nhận xét ngay trên tôi, nhưng thêm vào trước mysql.để user.)
Steve Meisner

2
chức năng mật khẩu bị loại bỏ kể từ mysql 8.0.11. chi tiết thêm
chancyWu

62

Tôi đã gặp vấn đề tương tự một vài ngày trước. Nó xảy ra khi bạn cài đặt mysqlqua homebrewvà chạy tập lệnh khởi tạo ( mysql_install_db) trước khi khởi động mysqldaemon.

Để khắc phục, bạn có thể xóa mysqlcác tệp dữ liệu, khởi động lại dịch vụ và sau đó chạy tập lệnh khởi tạo:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

đã làm việc hoàn hảo cho tôi. Tôi không thực sự muốn đặt mật khẩu cho máy tính cục bộ của tôi, vì vậy các giải pháp khác là không thực sự những gì tôi đang tìm kiếm
brad

3
mysql_install_db không được dùng nữa, hãy xem xét sử dụngmysqld --initialize
Brian

1
Tôi chỉ nhận được No such file or directorykhi tôi chạy lệnh đầu tiên đó.
Đặc vụ Zebra

1
Sau khi chạy lệnh mysqld --initialize, bạn sẽ nhận thấy trong thông báo nhật ký trên bảng điều khiển rằng nó đặt mật khẩu tạm thời cho người dùng root .. sao chép nó và sử dụng mật khẩu cho lần sau khi bạn kích hoạt lệnh "mysql -uroot -p" - Nó chắc chắn sẽ hoạt động. . và sau đó mysql sẽ yêu cầu bạn đặt lại mật khẩu .. hãy kiểm tra điều này dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde 13/10/16

@VikrantLabde "Nó chắc chắn sẽ hoạt động" - tuyên bố rất tham vọng. Tôi đã thử điều này, sử dụng mật khẩu tạm thời mà nó cấp cho tôi nhưng nó vẫn không cấp quyền truy cập. Bạn có phải thoát bất kỳ dấu câu nào có dấu gạch chéo ngược không?
Max Goodridge

47

Gặp lỗi này sau khi cài đặt mysql qua home brew.

Vì vậy, trước tiên hãy gỡ bỏ cài đặt. Sau đó cài đặt lại qua Homebrew

brew update
brew doctor
brew install mysql

Sau đó khởi động lại dịch vụ mysql

 mysql.server restart

Sau đó, chạy lệnh này để đặt mật khẩu gốc mới của bạn.

 mysql_secure_installation

Cuối cùng nó sẽ yêu cầu tải lại các đặc quyền. Nói có. Sau đó đăng nhập lại mysql. Và sử dụng mật khẩu mới mà bạn đã đặt.

mysql -u root -p

1
Đây là giải pháp hoàn hảo. Tôi đã thử chạy mysql_secure_installationnhưng phần quan trọng làmysql.server restart
Johan

mysql_secure_installation là chìa khóa quan trọng
Nik

Để tránh đau đầu ... chỉ cần nhập sử dụng lệnh khởi động lại như nirojan nói, sau đó chạy mysql_secure_installation
Dan Zuzevich 22/02/18

13

Nếu bạn chạy

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

cũng đăng nhập bằng tài khoản root không thành công:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

thì người dùng quản trị mặc định được tạo cùng tên với tên người dùng tài khoản MacOS của bạn , ví dụ: johnsmit .

Để đăng nhập với tư cách người chủ, vấn đề:

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> exit
Bye

Tên tài khoản MacOS đã làm điều đó cho tôi.
Dan

tôi có thể thêm mật khẩu cho người dùng tên tài khoản macos không?
OrigamiEye


4

Tôi vừa nhận thấy một số điểm chung cho hầu hết các câu trả lời ở đây và đã xác nhận trong bản cài đặt mới của mình. Thực sự rõ ràng nếu bạn nhìn vào các đề xuất để chạy mysqladmin -u rootmà không có-p .

Không có mật khẩu.

Brew thiết lập mysql chỉ với một người dùng root và không có mật khẩu nào cả. Điều này có lý, tôi đoán vậy, nhưng Cảnh báo sau cài đặt hoàn toàn không đề cập đến nó.


2
Tôi đã gặp sự cố bị từ chối truy cập giả sử không có mật khẩu gốc nên tôi không nghĩ vấn đề là rõ ràng.
Jack Frost

Tôi không nói rằng vấn đề là rõ ràng; đối với bất kỳ ai đã sử dụng MySQL trong các trường hợp bình thường, nó hoàn toàn khó hiểu. Nhưng nhìn vào các phản hồi khác, lý do là rõ ràng.
Spyder

3

Hãy thử với sudođể tránh lỗi "Quyền truy cập bị từ chối":

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS


3

Vì câu hỏi đã được hỏi / trả lời từ lâu nên những câu trả lời hàng đầu đó không phù hợp với tôi. Đây là giải pháp của tôi, vào năm 2020.

Bối cảnh : Mysql / mariadb mới được cài đặt bởi homebrew.

Vấn đề : Mật khẩu cho root không trống và không xác định.

Cách khắc phục :

  1. mysql -u CỦA BẠN-HỆ THỐNG-NGƯỜI DÙNG -p
  2. Mật khẩu trống (nhấn enter)
  3. ALTER USER 'root' @ 'localhost' ĐƯỢC XÁC ĐỊNH BỞI 'MỚI-ROOT-MẬT KHẨU';
  4. QUYỀN RIÊNG TƯ FLUSH;

Lý do :

  1. Homebrew sẽ tạo một người dùng có đặc quyền root được đặt tên theo tên người dùng MacOS hiện tại.
  2. nó không có mật khẩu
  3. Vì nó có tất cả các đặc quyền, chỉ cần đặt lại mật khẩu gốc với người dùng đó.
  4. Mật khẩu ban đầu cho root được tạo ngẫu nhiên.

2020 câu trả lời đúng. Tôi không thể hỏi mật khẩu cho tên người dùng MacOS
OrigamiEye

2
  1. vào biểu tượng quả táo -> tùy chọn hệ thống
  2. mở Mysql
  3. trong các trường hợp, bạn sẽ thấy "khởi tạo Cơ sở dữ liệu"
  4. bấm vào đó
  5. bạn sẽ được yêu cầu đặt mật khẩu cho root -> đặt một mật khẩu mạnh ở đó
  6. sử dụng mật khẩu đó để đăng nhập vào mysql từ lần sau

Hi vọng điêu nay co ich.


Cách đơn giản và dễ dàng. Cảm ơn.
Ezequiel França

1

Chạy những dòng này trong thiết bị đầu cuối đã thực hiện mẹo cho tôi và một số người khác gặp vấn đề tương tự. Các hướng dẫn này được liệt kê trong terminal sau khi brew cài đặt mysql thành công.

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

nơi YOURPASSWORDlà mật khẩu cho root.


Tôi chỉ nhận được No such file or directorykhi tôi chạy các lệnh
Agent Zebra

1

Kiểm tra để đảm bảo rằng bạn không có tệp .my.cnf ẩn trong homedir của mình. Đó là vấn đề của tôi.


1

Điều này phù hợp với tôi cho MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Bắt đầu mysql bằng cách chạy

dịch vụ nấu bia bắt đầu mysql

Chạy tập lệnh cài đặt

mysql_secure_installation

Bạn sẽ được yêu cầu thiết lập một plugin THIẾT LẬP MẬT KHẨU HỢP LỆ. Nhập y để làm điều này.

Chọn xác thực mật khẩu cần thiết (Không thực sự quan trọng nếu bạn chỉ sử dụng cơ sở dữ liệu)

Bây giờ chọn y cho tất cả các tùy chọn còn lại: Loại bỏ anon. người dùng; không cho phép đăng nhập root từ xa; loại bỏ cơ sở dữ liệu thử nghiệm; tải lại các bảng đặc quyền. Bây giờ bạn sẽ nhận được một tin nhắn

All done!


để bắt đầu mysql 5.7, hãy sử dụng stackoverflow.com/questions/51573145/…
Adam Winnipass

1

Điều này đã làm việc cho tôi. Hy vọng rằng điều này cũng làm việc cho bạn !!! Hãy theo dõi họ.

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';

2
Bạn phải cảnh báo rằng, rm -rf /usr/local/var/mysql/lệnh đang chạy sẽ xóa tất cả cơ sở dữ liệu và dữ liệu Mysql trên máy tính của bạn!
Lashae

0

Mật khẩu mặc định khi bạn cài đặt mysql qua brew là root, hãy thử điều này, nó hoạt động với tôi

mysql -uroot -proot


1
Từ brew info mysql: Chúng tôi đã cài đặt cơ sở dữ liệu MySQL của bạn mà không cần mật khẩu gốc. Để bảo mật nó chạy: mysql_secure_installation
ssc

@ssc Cách tốt nhất để đặt mật khẩu trên một cài đặt sạch.
alexventuraio

0

Nhà ga số 1:

$ mysql_safe

Nhà ga 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Điều này có thể đã hoạt động tại thời điểm câu trả lời được đăng, nhưng đã bị hỏng trong thời gian chờ đợi; với MySQL phiên bản 5.7.21 (hiện tại), nó không thành công với `` Cột không xác định 'Mật khẩu' trong 'danh sách trường' '.
ssc

CẬP NHẬT mysql.user SET verify_string = PASSWORD ('xxxxxx!') WHERE User = 'root';
kevinc

0

Tôi đang sử dụng Catalina và sử dụng mysql_secure_installationlệnh này và bây giờ phù hợp với tôi:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

tôi nhập root mật khẩu hiện tại

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

và làm phần còn lại


0

Vì vậy, trong trường hợp ai đó có cùng tình huống và cấu hình như tôi và cũng sắp phát điên - điều này phù hợp với tôi .

Sau một câu chuyện dài, tôi có một MariaDB được cài đặt sẵn, nó tiếp tục tự động khởi động lại khi tôi giết quá trình của nó (đây là cách mà brew đang làm), mật khẩu gốc mà tôi không biết.

$ brew services list

Điều này cho thấy một cái gì đó như:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

Dừng máy chủ MySQL bằng:

$ brew services stop mariadb

Sau đó, bắt đầu lại nó mà không cần người dùng root (và không sử dụng brew):

$ mariadbd --skip-grant-tables &

Ở đây, mysql_secure_installationkhông hoạt động đối với tôi vì --skip-grant-tablesvà nó sẽ không hoạt động nếu không có --skip-grant-tablesvì nó cần mật khẩu (mà tôi không có).
Cố gắng$(brew --prefix mysql)/bin/mysqladmin -u root password hunter2 chỉ trả về các lỗi lạ và không làm gì cả;$(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2cũng không hoạt động, đưa ra các lỗi khác nhau và đề xuất không phù hợp với tôi.

Nhưng bạn có thể đăng nhập vào mysql ngay bây giờ mà không cần thông tin đăng nhập:$ mysql

Ở đây, phương pháp cập nhật bảng người dùng cũ cho root không hoạt động vì "Mật khẩu" Cột "không thể cập nhật".
Phương pháp mới sử dụng alter userNHƯNG chỉ hoạt động sau khi bạn đã làm flush privileges;như vậy trước.
Sau đó:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>là lời nhắc MySQL ở đây)
Sau đó làm flush privileges;lại.
Thoát khỏi máy khách MySQL.

Bây giờ theo như brew có liên quan, MariaDB vẫn chưa chạy, vì vậy hãy sử dụng $ ps aux | grep -i mariadbđể tìm pid và $ kill -9 <pid>nó.
Sau đó sử dụng $ brew services start mariadbđể bắt đầu lại.


-1

Sử dụng tệp init để khởi động mysql để thay đổi mật khẩu gốc.

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

Mật khẩu gốc của bạn hiện đã được thay đổi. Đảm bảo tắt máy chủ đúng cách để lưu thay đổi mật khẩu. Trong cửa sổ đầu cuối mới thực thi

mysqladmin -u root -p shutdown

và nhập thẻ mới của bạn.

Khởi động dịch vụ của bạn và xóa tệp init

brew services start mysql
rm /tmp/mysql-init

Đã thử nghiệm trên phiên bản mysql 8.0.19

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.