O Linux permite o login do mysql a partir da raiz, mas não de outra conta de usuário do Linux

1

Portanto, tenho duas contas de usuário em um servidor da Web da BlueHost. Vamos chamá-los de "root" e "user1". Quando eu faço o login na minha conta root do linux, eu então tento logar no mysql na conta mysql "root". Então eu consigo logar no mysql. Tudo é bom lá.

O problema é, quando tento logar no usuário mysql "root" da conta linux "user1" usando exatamente as mesmas creds (none. Não há senha nessa conta mysql), recebo uma mensagem de erro que diz: < br>

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Existe alguma permissão de usuário no linux que eu preciso mudar no usuário "user1"?

    
por Adam McGurk 12.06.2018 / 01:01

1 resposta

1

Os servidores mysql / mariadb recentes têm um sistema de autenticação baseado em plug-in, por exemplo:

MariaDB [(none)]> select user,host,password,plugin from mysql.user limit 1;
+------+-----------+-------------------------------------------+-------------+
| user | host      | password                                  | plugin      |
+------+-----------+-------------------------------------------+-------------+
| root | localhost |                                           | unix_socket |
+------+-----------+-------------------------------------------+-------------+

Nesta configuração, o acesso para root @ localhost é APENAS concedido ao usuário unix "root", seu ID de usuário real é enviado para o servidor mysql e o login é concedido somente se corresponder ao usuário mysql solicitado.

Para o "user1" poder logar no servidor mysql você precisará:

  • Altere a autenticação raiz de volta para a autenticação de login / senha 'normal' (com cuidado, ela quebrará a maioria dos scripts automatizados, logrotate, service start / stop e semelhantes). ALTER USER root@localhost identified with 'mysql_native_password'; SET PASSWORD = password('foo');

  • Crie um mysql user1 com a autenticação unix_socket: CREATE USER user1 IDENTIFIED VIA unix_socket; e dê a ele algum direito de acesso root GRANT ALL WITH GRANT OPTION ON *.* TO user1@localhost;

por 12.06.2018 / 01:16