MacOSX homebrew mysql root şifresi


116

Bazı nedenlerden dolayı MySQL, root erişimi vermeyi durdurdu. Homebrew ile kaldırıldı ve yeniden yüklendi. Yeni kurulum, yeni tablolar ama girdiğimde

mysql -u root -p

Bu hatayı alıyorum:

'Root' @ 'localhost' kullanıcısı için erişim reddedildi (şifre kullanılarak: NO)

MySQL'i beş kez yeniden yükledim ama hala bir şifre istiyor. Bunu nasıl düzeltirim?


Süper kullanıcıda neredeyse kesin bir soru var. Şu adımları izleyin: superuser.com/a/400345
Icarus

13
Sadece koşun mysql_secure_installationve sorulan soruları basitçe cevaplayın
Abhinav Singh

8
Mysql_secure_installation komutu bir kök parolası ister; Eğer ayarladıysanız ve unuttuysanız, bu prosedür yardımcı olmayacaktır.
JohnG

1
Brew MySQL 5.7 kuruluysa, şu adımları izleyin: stackoverflow.com/a/33924648/133106
mrucci

FWIW mysql -u rootburada çalıştı ...
rogerdpack

Yanıtlar:


116

Sadece şu komutu çalıştırın ( NEWPASSşifreniz nerede ):

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

Aynı hatayı aldım ve bu şekilde düzelttim.


16
Benim için çalıştı. Açıktır ki (belki), dolar işareti ($) komutun bir parçası olarak girilmelidir (bu sadece bir kabuk istemi değildir).
Ocak

3
Kabuğunuzun geçmiş dosyasında saklamaktan kaçınmak için komuta NEWPASS'ı eklememenizi tavsiye ederim. Bu komut, geçiş olmadan çalıştırırsanız otomatik olarak giriş isteyecektir, böylece bunun için hiçbir neden yoktur. :)
Levi Figueira

4
mariadb kullanıyorsanız:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams

8
Benim için çalışmıyor, mariadb ile (@bryceadams notuyla bile): / usr / local / opt / mariadb / bin / mysqladmin: 'localhost'ta sunucuya bağlanma başarısız oldu:' 'root' @ 'localhost' kullanıcısı için erişim reddedildi '
trainoasis

3
mariadb için, kullanıcı için erişim reddedilirse:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
upful

110

Bunların hiçbiri benim için işe yaramadı. Sanırım bilgisayarımda bir yerde mysql vardı, bu yüzden orada bir şifre veya başka bir şey ayarlandı. Her çözümü denemek için saatler harcadıktan sonra benim için işe yarayan şey buydu:

$ 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

@Ghrua'ya tüm kredi


6
önceki gönderiler benim için işe yaramadı, ancak bu yıkıcı iken harika çalıştı.
Clay

1
sonunda mysql'de oturum açtığınızda ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';, yeni kök parolanızı ayarlamak için kullanın .
Martin Braun

Bu, mevcut veritabanımı silmeden benim için çalıştı
Mwirabua Tim

Nihayet uygun bir çalışma çözümü. @ 2020 MacOs katalina.
Mindaugas Kurlys

Önceki çözüm işe yaramadığında bu benim için çalıştı. Teşekkür ederim!
Les Brown

65

Yanlışlıkla root şifresini ayarladıysanız ve unuttuysanız ve tembel olduğunuz ve yerinde bir yedekleme çözümüne sahip olmayı unuttuğunuz ve oldukça yeni bir Homebrew kurulumu kullandığınız için tüm veritabanlarınızı silmek ve yeniden başlamak istemiyorsanız (Kış 2013), işte MySQL için şifrenizi sıfırlamak için adımlar.

Şu anda çalışan MySQL örneğini durdurun

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

Şimdi hibe tablolarını ve ağı atlayarak mysql'e elle başlayın

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

Not olduğunu çalıştırdığınızda eğer $ echo (demlemek --prefix MySQL) ve o kadar cevap değil "/ usr / local / opt / MySQL" bash, buna göre yolunu ayarlamak gerekir.

Bunu yaptıktan sonra, şimdi çalışan, korumasız bir MySQL örneğiniz olmalıdır.

Oturum açın ve parolayı ayarlayın

mysql -u root

Komut isteminde, etkilenen kullanıcı için yeni bir şifre belirlemek üzere aşağıdaki MySQL komutunu girin.

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

Her şey plana giderse şunu söylemeli:

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

MySQL isteminden çıkın.

mysql> exit
Bye

Sunucuyu durdur:

mysqladmin -u root shutdown

Şimdi, MySQL'imizi yeniden hazır hale getirmek için başlatma arka planını geri alalım:

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

Tebrikler. Mysql root şifrenizi sıfırladınız. Kendinize bir kahve koyun ve yerinde bir yedek çözüm bulun!


5
Parolayı değiştirdikten sonra korumasız MySQL sunucusunu durdurmak için:mysqladmin -u root shutdown
Vebjorn Ljosa

9
Bu problemle karşılaştım ve bu cevabı en yakın olanı buldum. Bunun passwordmysql 5.7.9'da geçerli bir sütun olmadığını fark ettim . Onun yerine kullanmak zorunda kaldım authentication_string. Talimatların geri kalanı mükemmel çalıştı. Teşekkürler!
M. Scott Ford

5
M. Scott Ford'un dediği gibi, doğru komut:update user set authentication_string=password('new_password_here') where user='root';
Panayotis

3
Çalışması update mysql.user set authentication_string=password('none') where user='root';için koşmam gerekiyordu. (Bana doğru Yukarıdaki yorum, ama başına ekleme gibi mysql.için user.)
Steve Meisner

2
mysql 8.0.11'den beri parola işlevi kaldırılmıştır. detaylar daha fazla
chancyWu

62

Birkaç gün önce aynı sorunu yaşadım. Yüklediğinizde bu olur mysqlaracılığı homebrewile (başlatma komut dosyasını çalıştırın mysql_install_db) önce başlayan mysqlcini.

Düzeltmek için mysqlveri dosyalarını silebilir , hizmeti yeniden başlatabilir ve ardından başlatma komut dosyasını çalıştırabilirsiniz:

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

benim için mükemmel çalıştı. Aslında yerel makinem için bir şifre belirlemek istemiyorum, bu yüzden diğer çözümler aradığım şey değil
brad

3
mysql_install_db kullanımdan kaldırıldı, kullanmayı düşününmysqld --initialize
Brian

1
Sadece almak No such file or directoryO ilk komutu çalıştırdığınızda.
Ajan Zebra

1
mysqld --initialize komutunu çalıştırdıktan sonra, konsol üzerindeki günlük mesajında ​​root kullanıcısı için geçici şifre belirlediğini göreceksiniz .. bunu kopyalayın ve "mysql -uroot -p" komutunu bir dahaki sefere ateşlediğinizde şifre kullanın - Kesinlikle çalışacaktır. . ve sonra mysql sizden şifreyi sıfırlamanızı isteyecektir .. bunu kontrol edin dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde

@VikrantLabde "Kesinlikle işe yarayacak" - çok iddialı bir ifade. Bunu denedim, bana verdiği geçici şifreyi kullandım ancak yine de erişim sağlamadı. Ters eğik çizgi ile herhangi bir noktalama işaretinden kaçmak zorunda mıydınız?
Maksimum Goodridge

47

Mysql'i ev demleme yoluyla yükledikten sonra bu hatayı aldım.

Bu yüzden önce kurulumu kaldırın. Ardından Homebrew ile Yeniden Yükleyin

brew update
brew doctor
brew install mysql

Ardından mysql hizmetini yeniden başlatın

 mysql.server restart

Ardından yeni kök şifrenizi ayarlamak için bu komutu çalıştırın.

 mysql_secure_installation

Son olarak, ayrıcalıkların yeniden yüklenmesini isteyecektir. Evet de. Ardından mysql'de tekrar oturum açın. Ve belirlediğiniz yeni şifreyi kullanın.

mysql -u root -p

1
Bu mükemmel çözüm. Koşmayı çoktan denedim mysql_secure_installationama kilit kısım şuydumysql.server restart
Johan

mysql_secure_installation anahtar parçaydı
Nik

Baş ağrısından kaçınmak için ... nirojan'ın dediği gibi yeniden başlatma komutunu yazın, ardından mysql_secure_installation
Dan Zuzevich

13

Eğer koşarsan

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

ayrıca root hesabı ile giriş başarısız olursa:

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

varsayılan yönetici kullanıcı, MacOS hesabı kullanıcı adınızla aynı adda oluşturulur , örneğin johnsmit .

Kök olarak oturum açmak için sorun:

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

MacOS hesap adı benim için yaptı.
Dan

macos hesap adı kullanıcısı için bir şifre ekleyebilir miyim?
OrigamiEye


4

Buradaki yanıtların çoğunda ortak bir şey fark ettim ve yeni kurulumumda onayladım. mysqladmin -u rootOnsuz çalıştırmak için önerilere bakarsanız aslında açıktır -p.

Parola yok.

Brew, mysql'i sadece bir root kullanıcısı ile ve hiçbir şifre olmadan ayarlar. Sanırım bu mantıklı, ancak yükleme sonrası Uyarılar bundan hiç bahsetmiyor.


2
Root şifresinin olmadığı varsayılarak erişim reddedildi, bu yüzden sorunun açık olduğunu düşünmüyorum.
Jack Frost

Sorunun açık olduğunu söylemiyorum; MySQL'i normal şartlar altında kullananlar için tamamen kafa karıştırıcı. Ancak diğer yanıtlara bakıldığında nedeni açık.
Spyder

3

sudo"Erişim reddedildi" hatasını önlemek için deneyin :

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


3

Soru uzun zaman önce sorulduğu / cevaplandığı için, bu en iyi cevaplar benim için işe yaramıyor. İşte benim 2020'deki çözümüm.

Arka plan : Yeni mysql / mariadb homebrew tarafından yüklenmiştir.

Sorun : Kök parolası boş değil ve bilinmiyor.

Düzeltme :

  1. mysql -u SİZİN-SİSTEM-KULLANICI ADI -p
  2. Şifre boş (enter tuşuna basın)
  3. ALTER USER 'root' @ 'localhost' 'NEW-ROOT-PASSWORD' TARAFINDAN TANIMLANMIŞTIR;
  4. FLUSH AYRICALIKLARI;

Nedeni :

  1. Homebrew, mevcut MacOS kullanıcı adıyla adlandırılan kök ayrıcalıklarına sahip bir kullanıcı oluşturacaktır.
  2. şifresi yok
  3. Tüm ayrıcalıklara sahip olduğundan, sadece o kullanıcıyla root şifresini sıfırlayın.
  4. Kök için ilk şifre rastgele oluşturuldu.

2020 doğru cevap. MacOS kullanıcı adı için bir şifre
isteyemiyorum

2
  1. elma simgesine git -> sistem tercihleri
  2. Mysql'i aç
  3. durumlarda "Veritabanını başlat" göreceksiniz
  4. ona tıkla
  5. root için şifre belirlemeniz istenecek -> orada güçlü bir şifre belirleyin
  6. mysql'de bir dahaki sefere giriş yapmak için bu şifreyi kullanın

Bu yardımcı olur umarım.


Basit ve kolay yol. Teşekkürler.
Ezequiel França

1

Terminalde bu hatları çalıştırmak benim ve aynı sorunu yaşayan diğer birkaç kişi için hile yaptı. Bu talimatlar, brew mysql'i başarıyla yükledikten sonra terminalde listelenir.

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'

YOURPASSWORDroot şifresi nerede .


Sadece almak No such file or directoryBunları komutları çalıştırdığınızda
Ajan Zebra

1

Homedir'inizde bir .my.cnf dosyasının saklanmadığını kontrol edin. Benim sorunum buydu.


1

Bu benim için MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx için çalıştı

Mysql'yi çalıştırarak başlatın

brew hizmetleri mysql'yi başlat

Kurulum komut dosyasını çalıştırın

mysql_secure_installation

Bir VALIDATE PASSWORD eklentisi kurmanız istenecektir. Bunu yapmak için y girin.

Gerekli parola doğrulamasını seçin (Veritabanını yalnızca siz kullanıyor olmanız gerçekten önemli değil)

Şimdi kalan tüm seçenekler için y'yi seçin: Anonu kaldırın. kullanıcılar; uzak kök oturum açmalarına izin verme; test veritabanını kaldır; ayrıcalık tablolarını yeniden yükleyin. Şimdi bir mesaj almalısın

All done!


mysql
5.7'yi

1

Bu benim için çalıştı. Umarım bu sizin için de işe yarar !!! Onları takip et.

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
Uyarmalısınız ki, çalıştırılan rm -rf /usr/local/var/mysql/komut bilgisayarınızdaki tüm veritabanlarını ve Mysql verilerini silecektir!
Lashae

0

Mysql'yi brew aracılığıyla yüklediğinizde varsayılan şifre root bunu deneyin, benim için çalıştı

mysql -uroot -proot


1
Kimden brew info mysql: MySQL veritabanınızı bir root şifresi olmadan kurduk. Çalıştırmak için: mysql_secure_installation
ssc

@ssc Temiz bir kurulumda parola belirlemenin en iyi yolu.
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

Bu, cevabın gönderildiği sırada işe yarayabilirdi, ancak bu arada bozuldu; (mevcut) MySQL sürüm 5.7.21 ile, 'alan listesi''nde' Bilinmeyen sütun 'Şifre' ile başarısız olur.
ssc

GÜNCELLEME mysql.user SET authentication_string = ŞİFRE ('xxxxxx!') NEREDE Kullanıcı = 'root';
kevinc

0

Catalina kullanıyorum ve bu mysql_secure_installationkomutu kullanıyorum ve şimdi benim için çalışıyor:

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

rootmevcut şifre olarak giriyorum

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.

ve gerisini yap


0

Yani, birisi benimle aynı duruma ve konfigürasyona sahipse ve aynı zamanda delirmek üzereyse - bu benim için işe yaradı .

Uzun bir hikaye sonra ben onun sürecini öldürdüğünde yeniden başlatmayı otomatik tuttu dem-yüklü mariadb vardı, (bunu yaparken demlemek 's idi) vardı ben yaptım bir kök şifre değil biliyorum.

$ brew services list

Bu şuna benzer bir şey gösterir:

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

MySQL sunucusunu şu şekilde durdurun:

$ brew services stop mariadb

Ardından root kullanıcısı olmadan (ve brew kullanmadan) tekrar başlatın :

$ mariadbd --skip-grant-tables &

Burada, mysql_secure_installationçünkü benim için --skip-grant-tablesişe yaramadı --skip-grant-tablesve şifreye ihtiyaç duyduğu için (ki sahip değildim) olmadan çalışmazdı .
Denemek $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2yalnızca garip hatalar döndürdü ve hiçbir şey yapmadı; $(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2ayrıca işe yaramadı, farklı hatalar ve benim için işe yaramayan öneriler verdi.

Ama olabilir kimlik bilgileri olmadan şimdi mysql oturum:$ mysql

Burada, kök için kullanıcı tablosunu güncellemenin eski yöntemi çalışmıyor çünkü "'Şifre' Sütunu 'güncellenemez".
Yeni yöntem kullanır alter userANCAK yalnızca siz bunu yaptıktan sonra çalışır flush privileges;.
Sonra:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>buradaki MySQL komut istemidir)
Sonra flush privileges;tekrar yapın.
MySQL istemcisinden çıkın.

Şimdi, demleme söz konusu olduğunda, MariaDB hala çalışmıyor ve bu yüzden $ ps aux | grep -i mariadbpid'i ve $ kill -9 <pid>onu bulmak için kullanın .
Ardından $ brew services start mariadbtekrar başlatmak için kullanın .


-1

Kök parolasını değiştirmek için mysql'yi başlatmak için init dosyasını kullanın.

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

Kök şifreniz artık değiştirildi. Parola değişikliğini kaydetmek için sunucuyu doğru şekilde kapattığınızdan emin olun . Yeni terminal penceresinde çalıştır

mysqladmin -u root -p shutdown

ve yeni kartınızı girin.

Hizmetinizi başlatın ve init dosyasını kaldırın

brew services start mysql
rm /tmp/mysql-init

Mysql 8.0.19 sürümünde test edildi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.