Mengatur kata sandi pengguna root MySQL pada OS X

235

Saya baru saja menginstal MySQL di Mac OS X. Langkah selanjutnya adalah mengatur kata sandi pengguna root, jadi saya melakukan ini selanjutnya:

  1. Buka aplikasi terminal untuk mengakses baris perintah Unix.
  2. Di bawah prompt Unix saya menjalankan perintah-perintah ini:

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

Tapi, ketika saya menjalankan perintah

$ ./mysql -u root, ini jawabannya:

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>

Saya bisa masuk ke mysql baris perintah tanpa kata sandi!

Kenapa ini?

madaura
sumber

Jawaban:

320

Coba perintah FLUSH PRIVILEGESketika Anda masuk ke terminal MySQL. Jika itu tidak berhasil, coba serangkaian perintah berikut saat berada di terminal MySQL

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

Ganti NEWPASSWORD dengan kata sandi apa pun yang Anda inginkan. Harus siap!

Pembaruan : Pada MySQL 5.7, passwordbidang telah diubah namanya authentication_string. Saat mengubah kata sandi, gunakan kueri berikut untuk mengubah kata sandi. Semua perintah lain tetap sama:

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

Pembaruan : Pada 8.0.15 (mungkin sudah sebelum versi itu) fungsi PASSWORD () tidak berfungsi, sebagaimana disebutkan dalam komentar di bawah ini. Anda harus menggunakan:

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

Scott
sumber
24
Di MySQL 5.7 dan seterusnya, nama kolom telah berubah. Anda harus menggunakannya UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';sebagai gantinya.
Carlos P
Terimakasih atas peringatannya. Saya akan mengedit jawaban saya untuk mencerminkan yang sesuai.
Scott
8
Ini juga terlihat seperti fungsi PASSWORD () sudah usang dan Anda harus meletakkan saja 'password'di sisi kanan persamaan
kvn
6
Jika Anda tidak dapat masuk, bagaimana ini membantu?
Jake N
11
setelah mengikuti langkah-langkah ini. Ketika saya mencoba masuk lagi dengan kata sandi baru saya, saya mendapatkanERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Þaw
197

Jika Anda tidak ingat kata sandi yang Anda setel untuk root dan perlu meresetnya, ikuti langkah-langkah ini:

  1. Hentikan server mysqld, ini bervariasi per instal
  2. Jalankan server dalam safe mode dengan privilege bypass

sudo mysqld_safe --skip-grant-tables;

  1. Di jendela baru terhubung ke database, atur kata sandi baru dan siram izin & keluar:

mysql -u root

Untuk MySQL yang lebih lama dari MySQL 5.7 gunakan:

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

Untuk MySQL 5.7+ gunakan:

USE mysql;

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

Segarkan dan keluar:

FLUSH PRIVILEGES;

\q

  1. Hentikan server safe mode dan jalankan kembali server reguler Anda. Kata sandi baru harus berfungsi sekarang. Bekerja seperti pesona bagi saya :)
radtek
sumber
4
Itu sempurna, terima kasih! Di Mac OSx Mavericks (2014) gunakan sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Chris Adams
2
passwordharus authentication_stringsekarang.
zx1986
Setelah MySQL 5.7, seharusnya UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';, seperti kata @Scott.
zx1986
Terima kasih akan menambahkan itu
radtek
1
Pada MacOSX ketika mySQL diinstal dengan "Preferensi 'Pane' pilihan (Apple Menu -> System Preferences ...), saya menemukan bahwa saya pertama kali harus berhenti mySQL menggunakan panel preferensi untuk langkah lengkap 1 di atas Menggunakan. sudo killTidak berfungsi karena Mac OSx akan secara otomatis meluncurkan kembali msql baru secara instan. Setelah saya menghentikan mysql menggunakan panel preferensi, saya dapat menjalankan secara manualmysqld_safe --skip-grant-tables
toddcscar
85

Setelah menginstal MySQL, Anda harus membuat kata sandi "root". Jika Anda tidak membuat kata sandi root, maka, well, tidak ada kata sandi root, dan Anda tidak perlu kata sandi untuk login.

Jadi, yang dikatakan, Anda perlu membuat kata sandi root.

Menggunakan terminal masukkan yang berikut ini:

Instalasi: Tetapkan kata sandi pengguna root:

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

Jika Anda melakukan kesalahan, atau perlu mengubah kata sandi root, gunakan yang berikut ini:

Ubah kata sandi 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
bob
sumber
5
Bagi mereka yang memiliki MySQL 5.7, Anda harus menggunakan update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';daripada menggunakanset password=...
pdm
66

Instruksi yang disediakan di situs web mysql sangat jelas, daripada yang disebutkan di atas

  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> PRIVILEGUS FLUSH;
  5. mysql> ALTER USER 'root' @ 'localhost' DIIDENTIFIKASI OLEH 'MyNewPass';
  6. mysql> exitatau 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. Masukkan kata sandi baru yaitu MyNewPass

Referensi: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Ankireddy Polu
sumber
2
di mac os 10.12.6, ia memberikan kesalahan setelah perintah ke-2 ERROR! Server berhenti tanpa memperbarui file PID (/usr/local/mysql/data/myhostname.pid).
diEcho
Terima kasih telah menunjukkan di mana menemukan dokumentasi. Agak membingungkan pada mac ketika Anda juga dapat menggunakan sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist dan sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss .mysql.mysqld.plist untuk berhenti dan memulai mysql. Menggunakan sudo /usr/local/mysql/support-files/mysql.server stop sepertinya pendekatan yang lebih baik.
Daniel
59
  1. Hentikan server mysqld.

    • Mac OSX: System Preferences > MySQL>Stop MySQL Server
    • Linux (Dari Terminal): sudo systemctl stop mysqld.service
  2. Mulai server dalam mode aman dengan memotong hak istimewa

    • Dari Terminal: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Di jendela terminal baru :

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Ini akan membuka baris perintah mysql. Dari sini masukkan:

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

    • FLUSH PRIVILEGES;

    • quit

  5. Hentikan server mysqld lagi dan mulai ulang dalam mode normal.

    • Mac OSX (Dari Terminal): sudo /usr/local/mysql/support-files/mysql.server restart
    • Terminal Linux: sudo systemctl restart mysqld
imbond
sumber
1
Untuk menjalankan 5.7.23 di High Sierra, ini berfungsi dengan baik. Terima kasih.
Daniel
Di MySQL 8.0.11, fungsi set di langkah ke-4 dihapus. Anda periksa di sini, ini berhasil. stackoverflow.com/a/52579886/621951
Günay Gültekin
22

Untuk Mysql 5.7 baru karena beberapa alasan, perintah bin dari Mysql tidak dilampirkan pada shell:

  1. Nyalakan kembali Mac setelah menginstal.

  2. Mulai Mysql:

    Preferensi Sistem> Mysql> Tombol Mulai

  3. Pergi ke folder install Mysql di terminal:

    $ cd /usr/local/mysql/bin/

  4. Akses ke Mysql:

    $ ./mysql -u root -p

dan masukkan kata sandi awal yang diberikan untuk instalasi.

  1. Di terminal Mysql ubah kata sandi:

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

Deoksiseia
sumber
16

Di terminal, tulis mysql -u root -pdan tekan Return. Masukkan kata sandi mysql saat ini yang harus Anda catat. Dan atur kata sandinya SET PASSWORD = PASSWORD('new_password');

Silakan lihat dokumentasi ini di sini untuk detail lebih lanjut.

Nitish Pareek
sumber
10

Jika Anda lupa kata sandi root MySQL, tidak bisa mengingat atau ingin masuk ... Anda dapat mengatur ulang kata sandi database mysql dari baris perintah di Linux atau OS X selama Anda tahu kata sandi pengguna root dari kotak tersebut. Anda berada di:

(1) Hentikan MySQL

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

(2) Mulai dalam mode aman:

sudo mysqld_safe --skip-grant-tables

(3) Ini akan menjadi perintah yang sedang berlangsung sampai proses selesai jadi buka jendela shell / terminal lain , masuk tanpa kata sandi:

mysql -u root

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

Pada perintah UPDATE di atas hanya ganti 'kata sandi' dengan kata sandi baru Anda sendiri, pastikan untuk menyimpan tanda kutip

(4) Hemat dan cukup

FLUSH PRIVILEGES;

\q

(5) Mulai MySQL

sudo /usr/local/mysql/support-files/mysql.server start
Homam Bahrani
sumber
5

Ketika saya menginstal OS X Yosemite, saya mendapat masalah dengan Mysql. Saya mencoba banyak metode tetapi tidak ada yang berhasil. Saya sebenarnya menemukan cara yang cukup mudah. Coba ini.

  1. Log in terminal pertama dari su privilege.

sudo su

  1. hentikan mysql

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

  1. mulai dalam mode aman:

sudo mysqld_safe --skip-grant-tables

  1. buka terminal lain, login sebagai hak istimewa daripada, login mysql tanpa kata sandi

mysql -u root

  1. ubah kata sandi

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

  1. hak istimewa

FLUSH PRIVILEGES;

  1. Anda selesai sekarang
Prem Timsina
sumber
Terima kasih banyak. Saya berjuang dengan ini sebentar. Apakah ini hal baru pada versi terbaru mysql?
jpbourbon
5

Metode yang disebutkan dalam jawaban yang ada tidak berfungsi untuk mysql 5.7.6 atau yang lebih baru. Menurut dokumentasi mysql ini adalah cara yang disarankan.

B.5.3.2.3 Mengatur Ulang Kata Sandi Root: Instruksi Umum

MySQL 5.7.6 dan yang lebih baru:

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

Referensi: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Imtiaz Shakil Siddique
sumber
3

Jika Anda tidak dapat mengingat kata sandi Anda, jawaban @ radtek bekerja untuk saya kecuali dalam kasus saya, saya telah menyiapkan MySQL menggunakan minuman yang berarti bahwa langkah 1 dan 2 dari jawabannya harus diubah menjadi:

  1. /usr/local/bin/mysql.server stop

  2. /usr/local/bin/mysqld_safe --skip-grant-tables

Catatan: kurangnya sudo.

schminnie
sumber
3

Saya pikir ini harus berhasil:

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

(Perhatikan bahwa Anda mungkin harus mengganti root dengan nama pengguna Anda jika itu bukan root)

karat
sumber
2

Menghentikan Server MySQL

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

Mulai MySQL dalam mode aman

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

Mengubah kata sandi root

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

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

Pengujian

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

Sekarang masukkan kata sandi baru untuk mulai menggunakan MySQL.

Shreyas
sumber
2

Inilah yang sebenarnya bekerja untuk saya:

  1. Pastikan tidak ada proses MySQL lain yang sedang berjalan. Untuk memeriksa ini lakukan hal berikut:

     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. Mulai MySQL dengan perintah:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Kata sandi untuk setiap pengguna disimpan di tabel mysql.user di bawah kolom Pengguna dan otentikasi_string masing-masing. Kami dapat memperbarui tabel sebagai:

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

macOS 10.14+ dengan 5.7.26 diinstal dari installer Mac OSX DMG.

Saat mencoba menggunakan perintah UPDATE yang diposting oleh pengguna lain menghasilkan kesalahan berikut:

GALAT 1820 (HY000): Anda harus mengatur ulang kata sandi Anda menggunakan pernyataan ALTER USER sebelum menjalankan pernyataan ini.

Salin kata sandi yang disajikan kepada Anda oleh Installer open terminal dan lakukan hal berikut:

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

sumber
2

Coba ini di terminal: /usr/local/bin/mysql_secure_installation

Jean-Luc Barat
sumber
2

Untuk referensi MySQL 8.0.15 +, fungsi kata sandi () tidak tersedia. Gunakan perintah di bawah ini.

Silakan gunakan

UPDATE mysql.user SET authentication_string='password' WHERE User='root';
Saurabh Verma
sumber
1

Jika Anda lupa kata sandi atau ingin mengubahnya ke mysql Anda:

  1. mulai terminal Anda dan masukkan:
sudo su
  1. Masukkan pass untuk sistem Anda
  2. Hentikan mysql Anda:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Biarkan jendela ini BUKA, jalankan jendela terminal kedua dan masukkan di sini:
mysql -u root
  1. Dan ubah kata sandi Anda untuk mysql:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

di mana "new_password" - pass baru Anda. Anda tidak perlu pass lama untuk mysql.

  1. Siram, keluar dan periksa pass baru Anda:
FLUSH PRIVILEGES;
  1. Tutup semua jendela dan periksa pass baru Anda untuk mysql. Semoga berhasil.
Alexander Yushko
sumber
1

Banyak yang berubah untuk MySQL 8. Saya telah menemukan modifikasi berikut dari dokumentasi MySQL 8,0 "Cara Mereset Kata Sandi Root" bekerja dengan Mac OS X.

Buat file temp $HOME/mysql.root.txtdengan SQL untuk memperbarui kata sandi root:

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

Ini digunakan mysql_native_passworduntuk menghindari plugin Otentikasi 'caching_sha2_password' tidak dapat dimuat kesalahan, yang saya dapatkan jika saya menghilangkan opsi.

Hentikan server, mulai dengan --init-fileopsi untuk mengatur kata sandi root, lalu mulai ulang server:

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

djb
sumber
1

Mari kita tambahkan solusi ini yang berfungsi di laptop saya!

Mac dengan Osx Mojave 10.14.5

Mysql 8.0.17 diinstal dengan homebrew

  • Saya menjalankan perintah berikut untuk menemukan path mysql

    brew info mysql

  • Setelah path diketahui, saya menjalankan ini:

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

  • Di terminal lain saya jalankan:

    mysql -u root

  • Di dalam terminal itu, saya mengubah kata sandi root menggunakan:

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

  • dan untuk menyelesaikan saya jalankan:

    FLUSH PRIVILEGES;

Dan voila kata sandi telah diatur ulang.

Referensi :

Espoir Murhabazi
sumber
1

Anda dapat secara manual mematikan mysql di Mac, dengan mengklik  menu Apple dan membuka System Preferences. Pilih panel preferensi “MySQL”, lalu klik tombol “Stop MySQL Server” untuk menghentikan Server MySQL di Mac.

Setelah Anda menghentikan mysql Anda, Anda harus mengikuti langkah-langkah ini.

  • Anda harus memulai mysql dalam mode skip-grant-tables

$ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables

  • Di terminal Anda sendiri, masukkan perintah ini ke FLUSH PRIVILEGES yang ada

/ usr / local / mysql / bin / mysql mysql> PRIVILEGUS FLUSH;

  • Sekarang Anda perlu mengubah kata sandi pengguna

mysql> ALTER USER 'root' @ 'localhost' DIIDENTIFIKASI OLEH 'newpassword';

mysql> keluar

Kemudian Anda dapat pergi ke menu  Apple dan membuka System Preferences. Pilih panel preferensi “MySQL”, lalu klik tombol “Stop MySQL Server” untuk menghentikan Server MySQL di Mac.

Akhirnya Anda dapat kembali ke menu  Apple dan membuka System Preferences. Pilih panel preferensi "MySQL", lalu klik tombol "Start MySQL Server" untuk memulai MySQL Server pada Mac.

Semoga itu bisa membantu

Siddhartha Thota
sumber
1

Tidak ada komentar sebelumnya yang menyelesaikan masalah di Mac saya. Saya menggunakan perintah di bawah ini dan itu berhasil.

$ 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
Thiago Farias
sumber
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';

Entah bagaimana saya perlu melakukan ini setiap kali Macbook saya restart. Posting ini untuk referensi pribadi, semoga membantu orang lain juga.

lafeber
sumber