Phpmyadmin kök olarak girilemiyor (MySQL 5.7)


66

Ubuntu masaüstü 16.04 kullanıyorum (15.10 sürümünden yükseltilmiş).

Ben tarafından phpmyadmin kurmuştu apt-get install phpmyadmin. Eğer gidersem işe yarar, localhost/phpmyadminfakat kök olarak giriş yapamıyorum.

Bunun için çok şey aradım. /etc/phpmyadmin/config.inc.phpKullanıcı ve şifreyi 'root' ve '' ile değiştirmeyi ve değiştirmeyi önerdikleri birçok kaynak buldum (şifre için boş). Ama benimkinden config.inc.phpfarklı. Mesela benim dosyamda kullanıcı ve şifre için satır yok ve otomatik olarak başka bir dosyadan alıyor gibi görünüyor /etc/phpmyadmin/config-db.php. Buna rağmen, bu dosyadaki kullanıcı ve şifreyi değiştirdim, ancak şimdi bu hatayı alıyorum:

#1698 - Access denied for user 'root'@'localhost'

Ne yapmalıyım?


Phpmyadmin Sürüm: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distribüt 5.7.12, EditLine sarıcısını kullanarak Linux için (x86_64)


Hangi MySQL sürümü?
Rael Gugelmin Cunha

Soru güncellendi
Mostafa Ahangarha

BASİT YOLU arama giriş ve pathword içinde /etc/mysql/debian.cnf - Ubuntu 16.04
cl-r

Yanıtlar:


127

MySQL 5.7 güvenli modeli değiştirdi: şimdi MySQL roototurumu gerektiriyor sudo.

Yani phpMyAdmin'in olacak değil kullanabilecektir rootkimlik.

En basit, en güvenli ve kalıcı çözüm yeni bir kullanıcı yaratacak ve gerekli ayrıcalıklara sahip olacaktır.

1. MySQL'e bağlanın

sudo mysql --user=root mysql

2. Gerçek bir şifre oluşturun

Aşağıdaki adımlarda some_passörnek şifre olarak kullanacağım . LÜTFEN, ŞİFRENİZ TARAFINDAN IT DEĞİŞTİR! SOME_PASSŞİFRE OLARAK KULLANMAYIN !

3. phpMyAdmin için bir kullanıcı oluşturun

Aşağıdaki komutları çalıştırın ( some_passistediğiniz şifreyle değiştirin ):

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

PhpMyAdmin'iniz yerel ana bilgisayara bağlanıyorsa, bu yeterli olmalıdır.

4. İsteğe bağlı ve güvensiz: uzak bağlantılara izin ver

Unutmayın : Uzak bir kullanıcının tüm ayrıcalıklara sahip olmasına izin vermek bir güvenlik sorunudur ve bu çoğu durumda gerekli değildir .

Bunu akılda tutarak, bu kullanıcının uzak bağlantılar sırasında aynı ayrıcalıklara sahip olmasını istiyorsanız, ek olarak çalıştırın ( some_passAdım 2'de kullanılan parola ile değiştirerek ):

CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

5. phpMyAdmin'i güncelleyin

Kullanılması sudo, düzenleme /etc/dbconfig-common/phpmyadmin.confdosyası (değiştirirken aşağıdaki bölümlerde kullanıcı / şifre değerlerini güncelleyerek some_passAdım 2. kullanılan şifre ile):

# dbc_dbuser: database user
#       the name of the user who we will use to connect to the database.
dbc_dbuser='phpmyadmin'

# dbc_dbpass: database user password
#       the password to use with the above username when connecting
#       to a database, if one is required
dbc_dbpass='some_pass'

2
Ben araştıracağım. Bu arada bir geçici çözüm olarak, yeni bir kullanıcı ekleyebilir ve tüm izinleri verebilir ve sonra bunu phpmyadmin config dosyasına ekleyebilirsiniz.
Rael Gugelmin Cunha

9
MySQL'in güncellemelerden sonra her şeyi kırmaya devam ettiğini sevmek lazım. Tezgahımda kök kullanıyordu ve şimdi tek çözümün komut satırında "sudo mysql" kullanmak, yeni bir kullanıcı oluşturmak, aynı ayrıcalıkları vermek ve bunu Workbench'te kullanmak. Aptal.
Andris

3
@MostafaAhangarha Araştırmadan sonra, boş parolaya izin verildiğini buldum, ancak rootkullanıcı her zaman sudo5.7'de kullanımı gerekli gördü . Bu nedenle, tüm ayrıcalıklara sahip yeni bir kullanıcı oluşturmaya rehberlik etmek için cevabı güncelledim.
Rael Gugelmin Cunha

3
@Andris Bu, insanları MySQL'i daha güvenli bir şekilde kullanmaya zorlar. Veritabanınızdaki kök kullanıcının bir şifre olmadan giriş yapmasına izin vermek asla iyi bir fikir değildir. Yerel bir geliştirme makinesinde iyi olabilir, ancak bir sunucuda çok tehlikelidir.
Dan

2
@Dan - bu benim en büyük sıkıntım - hiçbir uyarıda bulunmadan Ubuntu 16.04'e yükselttikten sonra yerel kalkınma ortamımı bozdu. Bunun gibi yeni kurulumlarda varsayılan olması gibi şeyler umrumda değil ama en azından bir güncelleme yüklemeden önce sorabilirim.
Andris

10

MariaDB ile phpmyadmin (Ubuntu 16.04LTS) kullanırken aynı problemle karşı karşıyaydım.

Ön şartlar:

1) MariaDB'yi yükleyin

sudo apt-get -y install mariadb-server mariadb-client
sudo mysql_secure_installation (answer to some interactive questions):
    Enter current password for root (enter for none): <enter>
    Set root password: n
    Remove anonymous users: n
    Disallow root login remotely: n
    Remove test database and access to it: n
    Reload privilege tables now: Y

Kaldırmak istiyorsanız mariaDB:

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

2) phpmyadmin'i yükleyin

sudo apt-get -y install phpmyadmin (and answer some interactive questions)
    Configuring phpmyadmin:
        Web server to reconfigure automatically: apache2
        Configure database for phpmyadmin with dbconfig-common: Yes
        MySQL application password for phpmyadmin: <blank>

3) apache2'de phpmyadmin ile sembolik bir bağlantı oluşturun.

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo service apache2 restart

Tamam, şimdi, Rael'in talimatlarını takip edersen, giriş yapabilirsin phpmyadmin, ama en azından benim için, kırmızı bir mesaj çıktıkça yeni veritabanları oluşturamadım: No privileges(ya da benzer bir mesaj)

Düzeltme phpmyadmin'i yeniden yapılandırarak ve bazı etkileşimli soruları yanıtlayarak oldu.

sudo dpkg-reconfigure phpmyadmin
<Ok>
Reinstall database for phpmyadmin: <Yes>
Connection method for MySQL database server for phpmyadmin: TCP/IP
Host name of the MySQL database server for phpmyadmin: localhost
Port number for the MySQL service: 3306
MySQL database name for phpmyadmin: phpmyadmin
<Ok>
MySQL username for phpmyadmin: root
MySQL application password for phpmyadmin: pass  # OR ANY PASSWORD YOU WANT
Password confirmation: pass
Name of the database's administrative user: root
Web server to reconfigure automatically: apache2
An error occurred while installing the database: ignore

Şimdi localhost/phpmyadminkullanarak phpmyadmin ( ) kullanarak bağlanmayı denerseniz

username: root
password: pass

veritabanları oluşturabileceksiniz.


1
Cevabınız için teşekkür ederim. Ama bütün yerine son kısmı paylaşmak daha iyi değil miydi? Bence gerisi burada işe yaramaz mı?
Mostafa Ahangarha

@MostafaAhangarha Belki gönderim biraz uzun, ama her zaman bir cevabın verildiği bağlamı bilmek isterim.
Dan Costinel

Koşu sudo dpkg-reconfigure phpmyadmin , mariadb ve unistalling mysql kurulumu ile bağlantılı mı? Eğer evet ise, o zaman bilginiz faydalı olabilir (belki kullanıyorum ve kullanacağım DB olan mysql'nin kaldırılmasını önerdiğiniz için olabilir). Olmazsa, bağlam olarak vermenin bir anlamı yoktur. Eğer hatalıysam, beni düzelt.
Mostafa Ahangarha

2
Ben sadece yeniden yapılandırmayı takip ettim ve şimdi çalışıyor.
cwhisperer

Kök hesap için şifreniz olmaması iyi bir fikir midir?
kurdtpage 20:18

6

Mysql 5.7 için Ubuntu 16.04'te aşağıdaki tablo bilgilerini kontrol edin ve gerekli ayarları yapın:

mysql>  SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
| phpmyadmin       | localhost | mysql_native_password |
| root             | %         | mysql_native_password |
+------------------+-----------+-----------------------+

Kökün auth_socket eklentisine sahip olup olmadığını kontrol edin, sonra aşağıdaki komutu çalıştırın:

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

Bir sonraki MySQL aptgüncellemesine kadar çalışacaktır . Yani, Ubuntu'daki her MySQL güncellemesinden sonra bunu uygulamanız gerekir.
Rael Gugelmin Cunha

6

Eğer phpymadmin bağlanamıyorsa, ayarlanan auth mekanizması olabilir auth_socket. Bunun gibi normal bir şifre kullanmak için değiştirebilirsiniz:

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

Sadece şimdi Ubuntu 18.04'ün temiz kurulumunda bununla mücadele ediyordum ve işte bunu yapan bu. Burada daha fazla açıklayan iyi bir makale var:

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3

Tamamlanması için MariadB sürüm 10.1.23'ü kullanırken sorunum için bir çözüm buldum. Yeni bir kullanıcı kurmak için kullanılacak sözdizimi, yukarıdaki @Rael Gugelmin Cunha'dan gönderilen yazıya bildirilene benzer, burada aynı sorunla karşılaşan diğerlerine referans olarak benim çözümümü koydum:

root@raspberrypi:# sudo mysql --user=root mysql
use mysql;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Saygılarımızla


1
Ubuntu'ya Sormaya Hoş Geldiniz! Ubuntu'ya sor sadece Ubuntu içindir, lütfen Raspbian hakkında cevap yazmayın (Debian'a dayanarak).
fosslinux

2
@ ubashu Bu çözüm Raspbian'a özgü değil, MariaDB'ye özgü.
Thomas Ward

Teşekkürler! Yine de yeni veritabanı oluşturma seçeneği yok.
tehlike89 22

2

Aynı problemi yaşadım, tavsiyelerin çoğunu takip ettim ve hiçbiri benim için işe yaramadı! Sorunum, tarayıcımda http: // localhost / phpmyadmin 'i açtığımda , giriş ayrıntılarını istediğimde aynıydı .

Root'u kullanıcı olarak kullanıyordum ve bildiğim şifre doğruydu. Ve ben alıyordum

# 1698 - Kullanıcı 'root' @ 'localhost' kullanıcısı için erişim reddedildi

Tek gereken phpmyadmin, kullanıcı olarak kullanmaktı root, bilinen şifreyle kullanmaktı ve girmeme izin verdi.


3
Yani kullanıcı adı "phpmyadmin" olmalı?
Mostafa Ahangarha

1
Evet benim için çalıştı
plutesci

Ve benim için bir öğretici izleyen şifre, "some_pass" haha ​​idi. Teşekkürler!
Marcelo Ágil

@ MarceloÁgil Yukarıdaki cevabımda bazı uyarılar yazdım, insanlardan some_passgerçek bir parola ile değiştirmelerini istedim !
Rael Gugelmin Cunha

1

Rael Cunha atıfta:

Evet onun çözümü işe yarıyor ve ben başkalarını denedim. Bununla birlikte, benzer bir yapılandırma dosyasında açık parola bulunan bir kullanıcıya atıfta bulunmak, /etc/dbconfig-common/phpmyadmin.confsistem genelinde bir işlem için güvenlik açığı gibi görünür.

Bu yüzden MariaDB 10.1.xendişeli olanı öneririm (some_user ve some_pass, bulabileceğiniz herhangi bir şey olacaktır):

# mysql -u root
use mysql;
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON \*.\* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

ve phpadmin kurulumundan (4) olduğu gibi çıkılması.

Daha sonra kendi kimlik bilgilerinizle phpmyadmin'e giriş yapın

Kendi kurulumlarımda yukarıdaki '%' değerini güvenlik amaçlı olarak 'localhost' ile değiştiriyorum, ancak sunucunuzda kapalı bir 3306 bağlantı noktası varsa, bu sizin için bir güvenlik riski oluşturmayabilir.


0

Sadece aşağıdaki kod ubuntu 18.04, yukarıda php 7 ve mysql 5.7 için çalışır.

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

'Phpmyadmin' yerine geçmez. Başka bir kullanıcı oluşturmak, yeni kullanıcı oluşturmak, bu kullanıcıya bu şekilde veritabanı ayrıcalıkları atamak gibi tam bir ayrıcalığa sahip değildir. Sadece phpmyadmin kullanıcısı tam erişim elde eder.


-2

MySQL'i ayrı kurarsanız, aşağıdaki komutla durdurun sudo / opt / lampp / lampp stop hizmeti mysql stop sudo / opt / lampp / lampp start

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.