Ubuntu'ya yeni kurulumdan sonra 'root' @ 'localhost' kullanıcısı için erişim reddedildi (şifre kullanarak: YES)


124

Bugün Ubuntu 14.04.1 LTS ll'ye kök olarak giriş yaptım

ve sonra apt-get install mariadb-server(sudo olmadan ama kök olarak).

Sahip mySQL -h localhost -u root --password=<PW>olduğum

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

İle mySQL -u root -pDB'den giriş yapmış ve yaptılar

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;

Ancak bu yardımcı olmadı. Herhangi bir fikrin var mı Benzer soruların cevabını bulamadım.


Kök parolasını sıfırlamayı denediniz mi?
Özgür Bar

Yanıtlar:


278

TL; DR: Yeni bir yükledikten sonra kök kullanıcı olarak sonra mysql / mariadb erişim yeni sürümlerinde için, bir kök kabuğu içinde olması gerekir (yani sudo mysql -u root, ya mysql -u roottarafından başlatılmış bir kabuk içinde su -veya sudo -iilk)


Ubuntu'da aynı yükseltmeyi yaptıktan sonra aynı sorunu yaşadım.

Garip olan şuydu

sudo /usr/bin/mysql_secure_installation

Parolamı kabul eder ve ayarlamama izin verir, ancak müşteri rootaracılığıyla oturum mysqlaçamadım

Mariadb ile başlamak zorunda kaldım

sudo mysqld_safe --skip-grant-tables

root olarak erişim elde etmek için, diğer tüm kullanıcılar hala iyi erişebilir.

Baktığımızda mysql.userben root için fark masaya pluginsütun olarak ayarlanır unix_socketo mysql_native_password 'olarak ayarlanırsa diğer tüm kullanıcılar oysa. Bu sayfaya hızlı bir bakış: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ , Unix Socket'in uid, istemciyi çalıştıran işlemin, mysql.usertablo. Diğer bir deyişle mariadb'a erişmek için root olarak roototurum açmanız gerekir.

Yeterince eminim ki mariadb daemon'umu kimlik doğrulama gerekliyken yeniden başlatıyorum.

sudo mysql -u root -p

veya

sudo su -
mysql -u root -p

Bunu yaptıktan sonra, sudo yapmak zorunda kalmadan nasıl erişileceğini düşündüm, bu sadece bu mysql sorgularını çalıştırma meselesidir.

GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;

( <password>istediğiniz mysql root şifrenizle değiştirin). Bu etkin şifre root kullanıcısı için oturum açar.

Alternatif olarak mysql sorgusunu çalıştırarak:

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;

Şifreyi değiştirmeden şifre girişi kullanmak için root hesabını değiştirir, ancak bu sizi üzerinde root şifresi olmayan bir mysql / mariadb kurulumuna bırakabilir.

Bunlardan birinden sonra mysql / mariadb'yi yeniden başlatmanız gerekir:

sudo service mysql restart

Ve işte kişisel hesabımdan şu yolla erişim sağladım: mysql -u root -p

LÜTFEN BUNU YAPMANIN GÜVENLİĞİ AZALTTIĞINI UNUTMAYIN Muhtemelen MariaDB geliştiricileri iyi bir nedenden ötürü böyle bir kök erişim çalışmasına sahip olmayı seçmişlerdir.

sudo mysql -u root -pBunu düşündüğüm için, zorunda olduğum için oldukça mutluyum, bu yüzden buna geri dönüyorum, ancak başka bir yerde bulamadığım için çözümümü göndermeyi düşündüm.


7
"mariadb'a root olarak erişmek için root olarak oturum açmanız gerekir." - Bu cümle cevabın en üstünde olmalıdır.
Philipp Ludwig

1
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>'; ayrıcalıkları temizlemeden önce neden komutu iki kez çalıştırıyorsunuz ?
Blairg23

4
Bu, kurulum sırasında büyük kırmızı harfler gibi daha görünür bir yerde olmalı ya da ...
ASAP'a

1
btw, eğer benim gibi sudo service mysql restart
tembelsen

1
Bahşiş için teşekkürler, geliştirici için harika ama bunu orijinal haline nasıl geri döndürürsünüz?
Sam

42

Temiz Ubuntu 16.04 LTS'de, localhost için MariaDB root girişi şifre stilinden sudo giriş stiline değiştirildi ...

yani, sadece yap

sudo mysql -u root

şifre ile giriş yapmak istediğimiz için, başka bir kullanıcı 'kullanıcı' oluştur

MariaDB konsolunda ... ('sudo mysql -u root' ile MariaDB konsoluna girersiniz)

use mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword';
\q

sonra bash kabuk isteminde,

mysql-workbench

ve localhost'ta 'şifreniz' ile 'kullanıcı' ile giriş yapabilirsiniz


12

Komutu dene

sudo mysql_secure_installation

enter tuşuna basın ve yeni bir şifre atamak kökü içinde mysql / mariadb .

Gibi bir hata alırsanız

HATA 2002 (HY000): '/var/run/mysqld/mysqld.sock' soketi aracılığıyla yerel MySQL sunucusuna bağlanılamıyor

hizmeti ile etkinleştirin

service mysql start

şimdi tekrar girersen

mysql -u root -p

sorunu takip ederseniz ile girin sudo suve mysql -u root -pşimdi kök için izinleri uygulayın

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';

bu, MariaDB'deki sorunumu çözdü .

İyi şanslar



3

Mariadb'a root olarak erişebilmek için Ubuntu'da root olarak oturum açmam gerekiyordu. İlk kurduğunuzda sizden yapmanızı istediği "Harden ..." ile bir ilgisi olabilir. Yani:

$ sudo su
[sudo] password for user: yourubunturootpassword
# mysql -r root -p
Enter password: yourmariadbrootpassword

ve içeridesin.


2

Ayrıcalıkları temizlemek için yeni komut şudur:

FLUSH PRIVILEGES

Eski komut FLUSH ALL PRIVILEGESartık çalışmıyor.

Şuna benzer bir hata alacaksınız:

MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1

Bu yardımcı olur umarım :)



0

Ubuntu gibi sistem, auth_socket eklentisini kullanmayı tercih ediyor . Kullanıcı adınızı DB'de karşılaştırarak ve mysql talebinde bulunan işlemi yaparak kimlik doğrulamaya çalışacaktır; burada anlatılıyor

Soket eklentisi, soket kullanıcı adının (işletim sistemi kullanıcı adı), istemci programı tarafından sunucuya belirtilen MySQL kullanıcı adıyla eşleşip eşleşmediğini kontrol eder ve yalnızca adlar eşleşirse bağlantıya izin verir.

Bunun yerine , kimlik doğrulaması için kullanıcı / parola gerektirecek olan mysql_native_password ile geri dönmek isteyebilirsiniz .

Yöntem elde etmek hakkında, tavsiye bu yerine.

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.