Não é possível entrar no phpmyadmin como root (MySQL 5.7)

44

Estou usando a área de trabalho do Ubuntu 16.04 (atualizada a partir de 15.10).

Eu tinha instalado o phpmyadmin de apt-get install phpmyadmin . Ele funciona se eu for para localhost/phpmyadmin , mas não consigo fazer login como root.

Eu tenho procurado muito por isso. Eu encontrei muitas fontes em que eles sugerem para alterar /etc/phpmyadmin/config.inc.php e substituir o usuário e senha com 'root' e '' (vazio para senha). Mas meu config.inc.php é diferente do deles. Por exemplo, em meu arquivo, não há linha para usuário e senha e parece que ele é obtido automaticamente de outro arquivo que é /etc/phpmyadmin/config-db.php . Apesar disso, alterei o usuário e a senha nesse arquivo, mas agora recebo este erro:

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

O que devo fazer?

Phpmyadmin Versão: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12, para Linux (x86_64) usando o wrapper EditLine

    
por Mostafa Ahangarha 26.04.2016 / 20:52

9 respostas

91

O MySQL 5.7 mudou o modelo seguro: agora o MySQL root login requer um sudo .

Ou seja, o phpMyAdmin não poderá usar as credenciais root .

A solução mais simples, segura e permanente será criar um novo usuário e conceder privilégios necessários.

1. Conecte-se ao mysql

sudo mysql --user=root mysql

2. Crie um usuário para o phpMyAdmin

Execute os seguintes comandos (substituindo some_pass pela senha desejada):

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

Se o seu phpMyAdmin estiver se conectando ao localhost, isso deve ser suficiente.

3. Opcional: permitir conexões remotas

Lembre-se : permitir que um usuário remoto tenha todos os privilégios como uma preocupação de segurança.

Com isso em mente, se você quiser que esse usuário tenha os mesmos privilégios durante conexões remotas, adicionalmente é executado (substituindo some_pass pela senha usada na Etapa 2):

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

4. Atualizar o phpMyAdmin

Usando sudo , edite o arquivo /etc/dbconfig-common/phpmyadmin.conf atualizando os valores de usuário / senha nas seções a seguir (substituindo some_pass pela senha usada na Etapa 2):

# 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'
    
por Rael Gugelmin Cunha 26.04.2016 / 21:35
9

Eu estava enfrentando o mesmo problema ao usar o mariaDB com phpmyadmin (Ubuntu 16.04LTS).

Pré-requisitos:

1) Instale o MariaDB

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

Se você deseja desinstalar 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) Instale o phpmyadmin

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) No apache2, crie um link simbólico para o phpmyadmin

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

Ok, agora, se você seguir as instruções do Rael, poderá fazer o login no phpmyadmin , mas, pelo menos para mim, não consegui criar novos bancos de dados, pois surgiu uma mensagem em vermelho: No privileges (ou alguma mensagem semelhante)

A correção foi reconfigurando o phpmyadmin e respondendo algumas perguntas interativas.

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

Agora, se você tentar se conectar ao phpmyadmin ( localhost/phpmyadmin ) usando

username: root
password: pass

você poderá criar bancos de dados.

    
por Dan Costinel 19.03.2017 / 19:36
3

Para completar, encontrei uma solução para o meu problema ao usar o MariadB versão 10.1.23. A sintaxe a ser usada para configurar um novo usuário é semelhante a uma relatada no post acima do @Rael Gugelmin Cunha, eu coloquei aqui a minha solução para referência a outros que enfrentam o mesmo problema:

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;

Atenciosamente

    
por 27.06.2018 / 14:02
3

No Ubuntu 16.04 para o Mysql 5.7, confira abaixo as informações da tabela e faça as configurações necessárias:

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

Verifique se o root está tendo o plug-in auth_socket e execute o comando abaixo:

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
    
por 25.07.2018 / 11:44
1

Referindo-se a Rael Cunha:

Sim, sua solução funciona e eu tentei outras. No entanto, referir-se a um usuário com uma senha exposta em um arquivo de configuração como /etc/dbconfig-common/phpmyadmin.conf parece uma falha de segurança para uma ação em todo o sistema.

Então eu prefiro sugerir em que MariaDB 10.1.x está em questão (some_user e some_pass serão qualquer coisa que você possa criar):

# 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;

e deixando a configuração do phpadmin (4) como está.

Faça login no phpmyadmin com suas próprias credenciais depois

Em minhas configurações eu substituo o '%' acima por 'localhost' por questões de segurança, mas se você tiver a porta 3306 fechada em seu servidor que não necessariamente apresentaria um risco de segurança para você.

    
por Antonio J. de Oliveira 07.02.2018 / 14:28
1

Se o phpymadmin não puder se conectar, pode ser devido ao mecanismo de autenticação definido como auth_socket . Você pode alterá-lo para usar uma senha comum como esta:

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

Eu estava lutando com isso agora mesmo em uma instalação limpa do Ubuntu 18.04 e é isso que fez o trabalho. Há um artigo decente aqui explicando mais:

link

    
por billynoah 29.04.2018 / 07:34
0

Eu tive o mesmo problema, eu segui a maioria dos conselhos e nada disso funcionou para mim! Meu problema era o mesmo quando eu abri o localhost / phpmyadmin no meu navegador, ele solicitou os detalhes do login.

Eu adicionava root como usuário. e a senha que eu sabia estava correta. e eu estava recebendo # 1698 - Acesso negado para o usuário 'root' @ 'localhost'

tudo é usar o phpmyadmin como usuário não root, e a senha conhecida e abre.

espero que isso ajude alguém, meio engraçado o quanto eu esqueci isso. mas funciona para mim com esse erro # 1698 - Acesso negado para o usuário 'root' @ 'localhost'

    
por 15.06.2018 / 23:02
0

Apenas abaixo código funciona para o Ubuntu 18.04, php 7 acima e mysql 5.7

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

Não substitua 'phpmyadmin'. A criação de qualquer outro usuário não tem privilégio total, como criar um novo usuário, atribuir privilégios de banco de dados a esse usuário assim. Apenas o usuário do phpmyadmin terá acesso total.

    
por 22.10.2018 / 12:56
-2

se você instalar o MySQL separado, pare com este comando abaixo     sudo / opt / lampp / lampp stop     serviço mysql stop     sudo / opt / lampp / lampp start

    
por zouhair elhadraoui 16.03.2018 / 12:26