O MySQL trata de forma diferente "localhost" e "127.0.0.1"; o primeiro é usado para executar uma conexão de soquete Unix em /var/lib/mysql/mysql.sock
ou qualquer outra coisa. Portanto, você precisa de duas instruções GRANT
diferentes na sua tabela mysql.user
(pelo menos no OpenSuSE Linux; por exemplo, no Windows, sua milhagem pode variar):
(conexão mysql como root)
GRANT ALL PRIVILEGES (*or privilege list*) ON yourdb.* TO user@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES (*or privilege list*) ON yourdb.* TO [email protected] IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Então, é óbvio que seu script está realmente tentando instalar como "root @ localhost". Se você não puder editar o script ou a configuração do instalador, você poderá trabalhar com isso temporariamente desativando a senha do root:
USE mysql;
UPDATE user SET Password = NULL WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
... para maior segurança, não efetue logout do mysql depois de fazer isso. Após a conclusão da instalação, você precisará redefinir a senha de root:
GRANT ALL PRIVILEGES ON mysql.* TO root@localhost IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;
Isso não resolve o problema de o que o script faz depois de instalar . As chances são de que ainda use root no localhost, e ainda não use senha. Então, assim que você redefinir a senha, ela irá parar de funcionar. Você precisa encontrar referências ao root e ao localhost (elas podem ser especificadas separadamente) na configuração do script: deve haver algo como
user = root
host = localhost
dbname = somedb
ou talvez
'username' => 'root',
"hostaddr" => "localhost",
...
e altere-os. Você pode criar um novo usuário no MySQL apenas emitindo uma nova instrução GRANT
.