Acesso negado para o usuário 'linuxuser' @ 'localhost' (usando a senha: no)

0

Meu cliente me pediu para mover seu site do Wordpress de um servidor compartilhado para a AWS.

A instância do AWS EC2 é o Ubuntu 14.04 LTS com o PHP 5.5.9 com o MySQL 5.5.38. Servidor antigo tem PHP 5.4.30 e MySQL 5.5.42. Não há PHPMyAdmin e CPanel instalados na instância do AWS. Então eu tenho que fazer tudo usando comandos.

Na instância do AWS, tenho acesso ao sudo como usuário do 'ubuntu'. Eu criei um novo usuário do Linux 'wpsite' e criei o diretório home dele. Eu consegui transferir todos os arquivos & amp; diretórios do servidor antigo para /home/wpsite/public_html .

Então eu criei um novo banco de dados 'WP_DB', e um novo usuário do MySQL 'wp_db_user' e concedeu todo o acesso ao WP_DB.

CREATE USER wp_db_user@localhost IDENTIFIED BY 'thepwd';
GRANT ALL PRIVILEGES ON WP_DB.* TO wp_db_user@localhost IDENTIFIED BY 'thepwd';
FLUSH PRIVILEGES;

Agora, eu mudei o arquivo wp-config.php

define('DB_NAME', 'WP_DB');
define('DB_USER', 'wp_db_user');
define('DB_PASSWORD', 'thepwd');
define('DB_HOST', 'localhost');

Depois, restaurei o antigo banco de dados WP do sql dump, usando a conta wp_db_user (também tentei com o usuário root). Em seguida, criei uma configuração de vhost no Apache2 com nome de servidor & amp; alias e caminho do diretório e o A-Record alterado do domínio para a instância do AWS. Até este ponto, tudo correu bem. Não houve erro.

Quando eu visito o site, o site wordpress é exibido, mas o problema é que certos conteúdos estão faltando incluindo o título do site. Eu dei uma olhada no arquivo de log de erros e esse erro está listado em várias linhas:

PHP Warning: mysql_query(): Access Denied for user 'ubuntu'@'localhost' (using password: no) in /home/wpsite/public_html/wp-content/themes/enterprise-pro/front-page.php on line 5

e a linha mencionada contém o seguinte código

$sel_home = mysql_query("select * from admin_home_page");

Então copiei arquivos WP no meu Ubuntu 14.04 LTS local (64 bits), Apache / 2.4.7, PHP 5.5.9 e MySQL 5.5.41. Eu vejo o seguinte erro no arquivo de log.

PHP Warning: mysql_query(): Access Denied for user 'www-data'@'localhost' (using password: no) in /home/wpsite/public_html/wp-content/themes/enterprise-pro/front-page.php on line 5

Aponte para observar que o usuário mencionado na mensagem de erro não é um usuário do MySQL . É um usuário do Linux. Não consigo identificar se é um problema com o Wordpress, a versão do PHP, o MySQL ou as permissões do Linux. Eu não sou pro no Linux também. Eu fiz tudo lendo de blogs e outras perguntas do Stackoverflow.

O site está funcionando bem no servidor antigo. Também posso efetuar login na seção administrativa do WP no novo servidor, que usa o mesmo banco de dados sem nenhum erro. Alguém poderia me dizer o que estou fazendo de errado e o que poderia ser feito para resolver esse problema?

Obrigado antecipadamente.

Editar : Para mais testes, eu copiei arquivos WP no meu Win 7 (64 bits), Apache / 2.2.22 (Win32), PHP / 5.3.8 e MySQL 5.1.37. Tudo funcionou. Nenhum erro no arquivo de log.

    
por Ritesh 04.04.2015 / 07:33

1 resposta

0

Qual versão é a instalação do seu wordpress?

Se for > = 3,9 leia isto:

link

In WordPress 3.9, we added an extra layer to WPDB, causing it to switch to using 
the mysqli PHP library, when using PHP 5.5 or higher.

For plugin developers, this means that you absolutely shouldn’t be using PHP’s mysql_*() 
functions any more – you can use the equivalent WPDB functions instead.

Então, basicamente, se você estiver usando o WP > = 3.9 e estiver usando o PHP > = 5.5, você não poderá acessar o db com a função mysql_ * (é uma prática ruim, mas eles estão obsoletos).

Você deve considerar diminuir a versão do PHP se não quiser alterar o código ou alterar o código para usar o objeto $ wpdb.

A melhor solução será atualizar o seu plugin que você está usando com o da sua versão do WP, se existir. Você deve procurar o desenvolvedor do plugin.

    
por shaddy 04.04.2015 / 07:51