MacOSX homebrew mysql password root

116

Untuk beberapa alasan MySQL berhenti memberikan akses untuk root. Dicopot dan dipasang ulang dengan Homebrew. Instal baru, tabel baru tetapi ketika saya masuk

mysql -u root -p

Saya mendapatkan kesalahan ini:

Akses ditolak untuk 'root' @ 'localhost' pengguna (menggunakan kata sandi: TIDAK)

Saya menginstal ulang MySQL lima kali tetapi masih meminta kata sandi. Bagaimana cara mengatasinya?

Alisher Ulugbekov
sumber
Hampir ada pertanyaan pasti tentang superuser. Ikuti langkah-langkah ini: superuser.com/a/400345
Icarus
13
Jalankan saja mysql_secure_installationdan jawab pertanyaan yang diajukan, sederhana
Abhinav Singh
8
Perintah mysql_secure_installation meminta kata sandi root; jika Anda telah mengatur dan melupakannya, prosedur ini tidak akan membantu.
JohnG
1
Jika brew menginstal MySQL 5.7, ikuti langkah-langkah ini: stackoverflow.com/a/33924648/133106
mrucci
FWIW mysql -u rootbekerja di sini ...
rogerdpack

Jawaban:

115

Jalankan saja perintah ini (di mana NEWPASSkata sandi Anda):

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

Saya mengalami kesalahan yang sama dan memperbaikinya dengan cara ini.

egermano
sumber
16
Bekerja untuk saya. Jelas (mungkin), tanda dolar ($) harus dimasukkan sebagai bagian dari perintah (ini bukan hanya prompt shell).
kompor
3
Saya akan merekomendasikan untuk tidak menyertakan NEWPASS dalam perintah untuk menghindari penyimpanan di file riwayat shell Anda. Perintah itu secara otomatis akan meminta input jika Anda menjalankannya tanpa izin jadi tidak ada alasan untuk itu. :)
Levi Figueira
4
jika menggunakan mariadb:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams
8
Tidak berfungsi untuk saya, dengan mariadb (bahkan dengan catatan @bryceadams): / usr / local / opt / mariadb / bin / mysqladmin: sambungkan ke server di 'localhost' kesalahan gagal: 'Akses ditolak untuk' root '@' localhost 'pengguna '
trainoasis
3
untuk mariadb, jika Anda mendapatkan akses ditolak untuk pengguna:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
upful
110

Tak satu pun dari ini berhasil untuk saya. Saya pikir saya sudah memiliki mysql di suatu tempat di komputer saya sehingga kata sandi disetel di sana atau sesuatu. Setelah menghabiskan berjam-jam mencoba setiap solusi di luar sana, inilah yang berhasil untuk saya:

$ 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

semua kredit untuk @Ghrua

stackPusher
sumber
6
posting sebelumnya tidak berhasil untuk saya, tetapi yang satu ini sementara merusak bekerja dengan baik.
Clay
1
ketika Anda akhirnya masuk ke mysql, gunakan ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';untuk mengatur kata sandi root baru Anda.
Martin Braun
Ini bekerja untuk saya tanpa menghapus database saya yang ada
Mwirabua Tim
Akhirnya solusi kerja yang tepat. @ 2020 Macan Putih.
Mindaugas Kurlys
Ini berhasil untuk saya ketika solusi sebelumnya tidak. Terima kasih!
Les Brown
65

Jika Anda secara tidak sengaja mengatur dan lupa kata sandi root, dan Anda tidak ingin menghapus semua database Anda dan memulai kembali karena Anda malas dan lupa memiliki solusi cadangan, dan Anda menggunakan instalasi Homebrew yang cukup baru (Musim Dingin 2013), berikut adalah langkah-langkah untuk mengatur ulang kata sandi Anda untuk MySQL.

Hentikan instance MySQL yang sedang berjalan

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

Sekarang mulai mysql dengan melewatkan tabel hibah dan jaringan

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

Perhatikan bahwa jika Anda menjalankan echo $ (brew --prefix mysql) dan tidak merespons sebagai "/ usr / local / opt / mysql" di bash, Anda perlu menyesuaikan jalur yang sesuai.

Setelah Anda melakukan ini, Anda sekarang harus memiliki instance MySQL yang berjalan dan tidak terlindungi.

Masuk dan atur kata sandi

mysql -u root

Saat diminta, masukkan perintah MySQL berikut untuk menetapkan kata sandi baru bagi pengguna yang terkena dampak.

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

Jika semua berjalan sesuai rencana, seharusnya dikatakan:

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

Keluar dari prompt MySQL.

mysql> exit
Bye

Hentikan server:

mysqladmin -u root shutdown

Sekarang, mari kita kembalikan daemon peluncuran sehingga MySQL kita siap lagi:

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

Selamat. Anda baru saja mereset kata sandi root mysql Anda. Tuangkan kopi untuk diri Anda sendiri dan dapatkan solusi cadangan!

seperti ablemike
sumber
5
Untuk menghentikan server MySQL yang tidak dilindungi setelah mengubah kata sandi:mysqladmin -u root shutdown
Vebjorn Ljosa
9
Saya baru saja mengalami masalah ini, dan menemukan jawaban ini yang paling mendekati. Saya perhatikan bahwa passworditu bukan kolom yang valid di mysql 5.7.9. Sebaliknya saya harus menggunakan authentication_stringsebagai gantinya. Instruksi lainnya bekerja dengan sempurna. Terima kasih!
M. Scott Ford
5
Seperti yang dikatakan M. Scott Ford, perintah yang tepat adalah:update user set authentication_string=password('new_password_here') where user='root';
Panayotis
3
Saya harus menjalankannya update mysql.user set authentication_string=password('none') where user='root';agar bisa bekerja. (Seperti komentar tepat di atas saya, tetapi tambahkan mysql.ke user.)
Steve Meisner
2
fungsi kata sandi dihapus sejak mysql 8.0.11. detail lebih lanjut
chancyWu
62

Saya mengalami masalah yang sama beberapa hari yang lalu. Ini terjadi ketika Anda menginstal mysqlmelalui homebrewdan menjalankan skrip inisialisasi ( mysql_install_db) sebelum memulai mysqldaemon.

Untuk memperbaikinya, Anda dapat menghapus mysqlfile data, memulai ulang layanan, lalu menjalankan skrip inisialisasi:

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
Britto
sumber
bekerja dengan sempurna untuk saya. Saya sebenarnya tidak ingin menyetel kata sandi untuk mesin lokal saya, jadi solusi lain bukanlah yang saya cari
brad
3
mysql_install_db tidak digunakan lagi, pertimbangkan untuk menggunakanmysqld --initialize
Brian
1
Saya hanya mengerti No such file or directoryketika saya menjalankan perintah pertama itu.
Agen Zebra
1
setelah menjalankan perintah mysqld --initialize Anda akan melihat di pesan log di konsol bahwa itu mengatur kata sandi sementara untuk pengguna root .. salin itu dan gunakan kata sandi untuk waktu berikutnya Anda menjalankan perintah "mysql -uroot -p" - Ini pasti akan berhasil. . dan kemudian mysql akan meminta Anda untuk mengatur ulang kata sandi .. lihat ini dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde
@VikrantLabde "Ini pasti akan berhasil" - pernyataan yang sangat ambisius. Saya mencoba ini, menggunakan kata sandi sementara yang diberikannya kepada saya tetapi masih tidak memberikan akses. Apakah Anda harus menghilangkan salah satu tanda baca dengan garis miring terbalik?
Max Goodridge
47

Mendapat kesalahan ini setelah menginstal mysql melalui home brew.

Jadi pertama hapus instalasi. Kemudian Instal ulang melalui Homebrew

brew update
brew doctor
brew install mysql

Kemudian restart layanan mysql

 mysql.server restart

Kemudian jalankan perintah ini untuk mengatur kata sandi root baru Anda.

 mysql_secure_installation

Akhirnya itu akan meminta untuk memuat ulang hak istimewa. Bilang iya. Kemudian login ke mysql lagi. Dan gunakan kata sandi baru yang telah Anda tetapkan.

mysql -u root -p
Nirojan Selvanathan
sumber
1
Ini adalah solusi yang tepat. Saya sudah mencoba berlari mysql_secure_installationtetapi bagian utamanya adalahmysql.server restart
Johan
mysql_secure_installation adalah bagian kunci
Nik
Untuk menghindari sakit kepala ... cukup ketik gunakan perintah restart seperti yang dikatakan nirojan, lalu jalankan mysql_secure_installation
Dan Zuzevich
13

Jika Anda lari

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

juga gagal masuk dengan akun root:

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

maka pengguna admin default dibuat dengan nama yang sama dengan nama pengguna akun MacOS Anda , misalnya johnsmit .

Untuk masuk sebagai root, masalah:

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
Arunas Bartisius
sumber
Nama akun MacOS melakukannya untuk saya.
Dan
dapatkah saya menambahkan kata sandi untuk pengguna nama akun macos?
OrigamiEye
7

Ini berhasil untuk saya:

sudo mysql -u root
Béatrice Cassistat
sumber
4

Saya baru saja memperhatikan sesuatu yang umum untuk sebagian besar jawaban di sini, dan mengonfirmasi pada pemasangan baru saya. Sebenarnya sudah jelas jika Anda melihat rekomendasi untuk dijalankan mysqladmin -u roottanpa -p.

Tidak ada kata sandi.

Brew mengatur mysql hanya dengan pengguna root dan tanpa kata sandi sama sekali. Ini masuk akal, saya kira, tetapi Peringatan pasca-pemasangan tidak menyebutkannya sama sekali.

laba laba
sumber
2
Saya memiliki masalah akses ditolak dengan asumsi tidak ada kata sandi root jadi saya rasa masalahnya tidak jelas.
Jack Frost
Saya tidak mengatakan bahwa masalahnya jelas; bagi siapa saja yang telah menggunakan MySQL dalam keadaan normal, ini sangat membingungkan. Tetapi melihat tanggapan lain, alasannya jelas.
Spyder
3

Coba dengan sudountuk menghindari kesalahan "Akses ditolak":

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

Matias Miranda
sumber
3

Karena pertanyaan sudah lama ditanyakan / dijawab, jawaban teratas itu tidak cocok untuk saya. Inilah solusi saya, pada tahun 2020.

Latar belakang : mysql / mariadb segar dipasang oleh homebrew.

Masalah : Kata sandi untuk root tidak kosong dan tidak dikenal.

Cara mengatasinya :

  1. mysql -u-SISTEM-USERNAME-ANDA -p
  2. Kata sandi kosong (tekan enter)
  3. ALTER PENGGUNA 'root' @ 'localhost' DIIDENTIFIKASI DENGAN 'NEW-ROOT-PASSWORD';
  4. HAK ISTIMEWA FLUSH;

Alasannya :

  1. Homebrew akan membuat pengguna dengan hak akses root yang dinamai dengan nama pengguna MacOS saat ini.
  2. itu tidak memiliki kata sandi
  3. Karena ia memiliki semua hak istimewa, cukup setel ulang kata sandi root dengan pengguna itu.
  4. Kata sandi awal untuk root dibuat secara acak.
Shiji.J
sumber
Jawaban benar 2020. Saya tidak bisa meminta kata sandi untuk nama pengguna MacOS
OrigamiEye
2
  1. buka ikon apel -> preferensi sistem
  2. buka Mysql
  3. dalam hal ini Anda akan melihat "menginisialisasi Database"
  4. klik itu
  5. Anda akan diminta untuk mengatur kata sandi untuk root -> mengatur kata sandi yang kuat di sana
  6. gunakan kata sandi itu untuk login di mysql dari waktu berikutnya

Semoga ini membantu.

pengguna3325650
sumber
Cara sederhana dan mudah. Terima kasih.
Ezequiel França
1

Menjalankan baris-baris ini di terminal melakukan trik bagi saya dan beberapa orang lain yang memiliki masalah yang sama. Instruksi ini terdaftar di terminal setelah brew menginstal mysql dengan sukses.

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'

dimana YOURPASSWORDkata sandi untuk root.

erin
sumber
Saya hanya mengerti No such file or directoryketika saya menjalankan perintah ini
Agen Zebra
1

Periksa apakah Anda tidak menyembunyikan .my.cnf di homedir Anda. Itu masalah saya.

pengguna8845989
sumber
1

Ini berhasil bagi saya untuk MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Mulai mysql dengan menjalankan

layanan pembuatan bir mulai mysql

Jalankan skrip instalasi

mysql_secure_installation

Anda akan diminta untuk menyiapkan plugin VALIDATE PASSWORD. Masukkan y untuk melakukan ini.

Pilih validasi kata sandi yang diperlukan (Tidak masalah jika Anda hanya menggunakan database)

Sekarang pilih y untuk semua opsi yang tersisa: Hapus langsung. pengguna; larang login root jarak jauh; hapus database uji; memuat ulang tabel hak istimewa. Sekarang Anda akan menerima pesan

All done!

Katie Lee
sumber
untuk memulai mysql 5.7 gunakan stackoverflow.com/questions/51573145/…
Adam Winnipass
1

Ini berhasil untuk saya. Semoga ini berhasil juga untuk Anda !!! Ikuti mereka.

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!!!!';
heyfranksmile
sumber
2
Anda harus memperingatkan bahwa, menjalankan rm -rf /usr/local/var/mysql/perintah akan menghapus semua database dan data Mysql di komputer Anda!
Lashae
0

Kata sandi default ketika Anda menginstal mysql melalui brew adalah root coba ini, itu berhasil untuk saya

mysql -uroot -proot

pengguna3805033
sumber
1
Dari brew info mysql: Kami telah menginstal database MySQL Anda tanpa kata sandi root. Untuk mengamankannya, jalankan: mysql_secure_installation
ssc
@ssc Cara terbaik untuk menyetel sandi pada penginstalan yang bersih.
alexventuraio
0

Terminal 1:

$ mysql_safe

Terminal 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
Dnyanesh Ghadge
sumber
Ini mungkin berhasil pada saat jawaban diposting, tetapi rusak sementara itu; dengan versi MySQL (saat ini) 5.7.21, gagal dengan `Kolom tidak dikenal 'Kata Sandi' di 'daftar bidang'`.
ssc
UPDATE mysql.user SET authentication_string = PASSWORD ('xxxxxx!') WHERE User = 'root';
kevinc
0

Saya menggunakan Catalina dan menggunakan mysql_secure_installationperintah ini dan sekarang berfungsi untuk saya:

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

saya masukkan rootsebagai kata sandi saat ini

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.

dan lakukan sisanya

Agus Sudarmanto
sumber
0

Jadi, jika seseorang memiliki situasi dan konfigurasi yang sama seperti saya dan juga akan menjadi gila - ini berhasil untuk saya .

Setelah cerita panjang, saya memasang MariaDB yang diinstal ulang yang terus secara otomatis memulai ulang ketika saya mematikan prosesnya (ini dilakukan oleh minuman), yang memiliki kata sandi root, yang saya tidak tahu.

$ brew services list

Ini menunjukkan sesuatu seperti:

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

Hentikan server MySQL dengan:

$ brew services stop mariadb

Kemudian mulai lagi tanpa pengguna root (dan tidak menggunakan brew):

$ mariadbd --skip-grant-tables &

Di sini, mysql_secure_installationtidak berhasil untuk saya karena --skip-grant-tables, dan itu tidak akan berfungsi tanpa --skip-grant-tableskarena memerlukan kata sandi (yang tidak saya miliki).
Mencoba $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2hanya mengembalikan kesalahan aneh dan tidak melakukan apa pun; $(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2juga tidak berfungsi, memberikan kesalahan yang berbeda, dan saran yang tidak berhasil untuk saya.

Tetapi Anda dapat masuk ke mysql sekarang tanpa kredensial:$ mysql

Di sini, metode lama untuk memperbarui tabel pengguna untuk root tidak berfungsi karena "Kolom 'Sandi' tidak dapat diperbarui".
Metode baru menggunakan alter userTAPI hanya berfungsi setelah Anda melakukannya flush privileges;lakukan itu terlebih dahulu.
Kemudian:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>adalah prompt MySQL di sini)
Kemudian lakukan flush privileges;lagi.
Keluar dari klien MySQL.

Sekarang sejauh menyangkut brew, MariaDB masih tidak berjalan, jadi gunakan $ ps aux | grep -i mariadbuntuk menemukan pid dan $ kill -9 <pid>itu.
Kemudian gunakan $ brew services start mariadbuntuk memulainya lagi.

MSpreij
sumber
-1

Gunakan file init untuk memulai mysql untuk mengubah kata sandi root.

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

Kata sandi root Anda sekarang diubah. Pastikan untuk mematikan server dengan benar untuk menyimpan perubahan kata sandi. Di jendela terminal baru, jalankan

mysqladmin -u root -p shutdown

dan masukkan kartu baru Anda.

Mulai layanan Anda dan hapus file init

brew services start mysql
rm /tmp/mysql-init

Diuji pada mysql versi 8.0.19

Sten
sumber