ubuntu 'daki normal kullanıcı hesabından mysql kullanıcısı root olarak giriş yapamaz 16.04

125

Ubuntu 16.04 LTS'yi php , mariadb ve nginx paketleriyle birlikte yükledim. % Co_de% koştum ve kök şifreyi değiştirdim.

Şimdi Ubuntu'da normal kullanıcı hesabı olarak oturum açarken root hesabını kullanarak mysql_secure_installation giriş yapmayı denediğimde erişim reddedildi.

mysql kullanarak giriş yaptığımda, mysql bana şifre bile sormuyor. % Co_de% çalıştırırsam, eski ayarların kalıcı olarak ayarlanmadığını görüyorum.

Neyi yanlış yapıyorum?

    
sordu codescope 02.05.2016 13:45

10 cevap

229

Son zamanlarda Ubuntu 15.04'ü 16.04'e yükselttim ve bu benim için çalıştı:

  1. İlk önce, sudo mysql’de bağlantı kurun

    sudo mysql -u root
    
  2. Db’de bulunan hesaplarınızı kontrol edin

    SELECT User,Host FROM mysql.user;
    +------------------+-----------+
    | User             | Host      |
    +------------------+-----------+
    | admin            | localhost |
    | debian-sys-maint | localhost |
    | magento_user     | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    
  3. Mevcut root @ localhost hesabını sil

    mysql> DROP USER 'root'@'localhost';
    Query OK, 0 rows affected (0,00 sec)
    
  4. Kullanıcınızı yeniden oluşturun

    mysql> CREATE USER 'root'@'%' IDENTIFIED BY '';
    Query OK, 0 rows affected (0,00 sec)
    
  5. Kullanıcınıza izinler verin (ayrıcalıkları temizlemeyi unutmayın)

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    Query OK, 0 rows affected (0,00 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0,01 sec)
    
  6. MySQL'ten çıkın ve sudo olmadan yeniden bağlanmayı deneyin.

Umarım bu yardımcı olur:)

    
verilen cevap Loremhipsum 08.06.2016 11:04
80
  

5.7'yi yüklerseniz ve root kullanıcısına bir parola sağlamazsanız,    auth_socket eklentisini kullanacaktır. Bu eklenti umursamıyor ve   şifre gerektirmez. Sadece kullanıcının bağlandığını kontrol eder   UNIX soketi kullanarak ve ardından kullanıcı adını karşılaştırır.

MySQL 5.7'deki Kullanıcı Parolasını Değiştirin "" eklentisiyle: auth_socket "

Yani plugin 'sini mysql_native_password ' e geri döndürmek için:

  1. Sudo ile giriş yap:

    sudo mysql -u root
    
  2. plugin değerini değiştirin ve tek bir komutla bir şifre ayarlayın:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
    

Elbette boş bir şifre ayarlamak için yukarıdaki komutu da kullanabilirsiniz.

Sadece kayıt için (ve MariaDB < 10.2 kullanıcısı), şifre sağlamadan plugin değerini değiştirmenin başka bir yolu da vardır (boş bırakarak):

update mysql.user set plugin = 'mysql_native_password' where User='root';
// to change the password too (credits goes to Pothi Kalimuthu)
// UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('secret') WHERE User = 'root';
FLUSH PRIVILEGES;
    
verilen cevap Todor 23.07.2016 09:46
7

Burada sorun, MariaDB veya MySQL kurulduğunda / güncellendiğinde (özellikle bir nokta kökü bir şifre olmadan ayarlanmışsa), Kullanıcılar tablosunda parola aslında boştur (veya yoksayılır) ve oturum açmaya bağlıdır. bir MySQL kullanıcısına karşılık gelen sistem kullanıcısı. Bunu, sistem köküne geçerek aşağıdaki gibi test edebilirsiniz ve sonra şunu yazın:

mysql -uroot -p

Ardından şifre ya da yanlış şifre girin. Muhtemelen izin verileceksiniz. (Unix kökünden şifreyle alakasız ve kullanıcı tanımlanmış olduğu için # mysql ile giriş yapabilirsiniz).

Peki neler oluyor? Peki, root olarak giriş yaparsanız ve aşağıdakileri yaparsanız:

select User,host,plugin from mysql.user; 
+----------------+-----------+-----------------------+
| User           | host      | plugin                |
+----------------+-----------+-----------------------+
| root           | localhost | auth_socket           |
+----------------+-----------+-----------------------+

auth_socket değerini (MariaDB'de unix_socket okuyabilir) not edersiniz. Bu soketler şifreleri göz ardı eder ve ilgili Unix kullanıcısının bir şifre kontrolü olmaksızın olmadan olmasına izin verir. Bu yüzden root ile giriş yapabilir, ancak farklı bir kullanıcıyla oturum açamazsınız.

Dolayısıyla çözüm, Kullanıcıları auth_socket/unix_socket 'yi kullanmamak ve bir şifre doğru şekilde ayarlamamaktır.

2017'den itibaren Ubuntu sürüm 16'da bulunan MariaDB (& lt; 10.2) için bu yeterli olmalıdır:

UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';

(Eklentiyi boş olarak ayarlamak işe yarayabilir. YMMV. Bunu denemedim.)

UPDATE mysql.user SET plugin = '', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';

Aksi halde:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';

Sonra

FLUSH PRIVILEGES;

Kayıt için, kullanıcının silmesini ve '%' ile yeniden oluşturmayı içeren çözüm, veritabanından tamamen kilitlendim ve grant ifadesini tam olarak almadığınız sürece başka sorunlara da neden olabilir. Zaten sahip olduğunuz kök.

Tecrübemde, sorun yalnızca kök kullanıcı ile gerçekleşir, çünkü diğer kullanıcılar ilk yükleme / güncellemenin bir parçası olarak manuel olarak eklenmez.

    
verilen cevap Gazzer 14.10.2017 06:18
2

Yeni mysql hesabı oluşturmaya çalışın, benim için işe yaradı (mysql 5.7.12):

  1. Sudo olarak giriş yap:

    sudo mysql -uroot
    
  2. Yeni kullanıcı oluştur ve ona ayrıcalıklar ver (şifre yok):

    CREATE USER 'admin'@'localhost' IDENTIFIED BY '';
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';
    
  3. Yeni kullanıcı olarak giriş yap:

    mysql -uadmin
    
verilen cevap Alex Yakovlev 28.05.2016 11:37
2

MySQL / MariaDB'yi temel depodan yüklediyseniz, kullanıcılar MySQL'e Unix oturumlarından MySQL root kullanıcısı olarak giriş yapamazlar ( sudo erişimi varsa uygulanabilir değildir)

  1. MySQL root kabuğuna giriş yapın:

    $ sudo mysql -u root -p
    
  2. Aşağıdaki sorguları çalıştırın:

    use mysql;
    update user set plugin='mysql_native_password' where user='root';
    flush privileges; 
    quit;
    
  3. Yeni bir kabuk açın, ardından:

    $ mysql -u root -p
    

Kaynak:

İşte

    
verilen cevap Gayan Weerakutti 02.12.2017 09:31
1

Bu kodu önce deneyin

echo "CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';" > your_init_file.sql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;" >> your_init_file.sql 
echo "FLUSH PRIVILEGES;" >> your_init_file.sql

ve sonra

killall mysqld
mysqld_safe --init-file=$PWD/your_init_file.sql

sonra Ctrl+Z tuşuna basın ve işlemi ön plandan arka plana çalıştırmak için bg yazın ve ardından erişiminizi şu şekilde doğrulayın:

mysql -u root -proot
mysql> show grants;
    
verilen cevap ADHITHYA SRINIVASAN 28.05.2016 11:47
1

Eğer root kullanıcısı altında mysql komutunu çalıştırırsanız, root @ localhost için soket kimlik doğrulaması etkinleştirildiği için parola sorulmadan erişim verilecektir. .

Şifre belirlemenin tek yolu, aşağıdaki gibi yerel kimlik doğrulamaya geçmek:

  

$ sudo mysql

     

MySQL & gt; ALTER USER 'root' @ 'localhost' İLE TANIMLI   BY "test" ile mysql_native_password;

    
verilen cevap Vadiaz 26.07.2017 17:23
1

İki şey yapmam gerekti (@Todor ve @Loremhipsum'a teşekkürler):

update mysql.user set plugin = 'mysql_native_password' where User='root';
grant all privileges on *.* to 'root'@'localhost';

ve ardından:

FLUSH PRIVILEGES;

Kullanıcıya root 'i düşürmeyi önermem.

    
verilen cevap Franc Drobnič 03.01.2018 17:43
0

MariaDB'yi kullanmak için oluşturduğum bazı provizyon senaryolarını uyarladım ve bu konuyla karşılaştı. Burada bir sürü bilgiyi bir Gazzer’in cevabı içinde bir araya getirerek konuya gerçekten sıfırlar; hepsi auth_socket / unix_socket ayarına kadar kaynar.

Yani MariaDB 5.5 (Ubuntu 14.04 altında) ve MariaDB 10'u (Ubuntu 16.04) altında kullanırken, MySQL'e giriş yaparak ve bu komutu çalıştırarak işleri hemen temizledik:

UPDATE mysql.user SET plugin='' WHERE User='root';
FLUSH PRIVILEGES;

Loremhipsum tarafından bu yayının en yüksek oyu verilen yanıtı içeren diğer yanıtlar, bırakmayı önererek kötü uygulamaları teşvik eder Bir kullanıcı ve sonra onları yeniden yaratma. Bana göre bu oldukça radikal bir çözüm. En iyi / en basit çözüm, plugin değerini geçersiz kılmak, ayrıcalıkları yıkamak ve yaşamla devam etmektir.

    
verilen cevap JakeGould 20.10.2017 02:54
-1

Aynı sorunu yaşadım ve aşağıdakileri çalıştırdım:

mysql_upgrade --force
    
verilen cevap klob 03.05.2016 08:48

Etiketlerdeki diğer soruları oku