Acabei de limpar meu Mac e fiz uma nova instalação do El Capitan. Estou lutando para me conectar ao Mysql agora. Depois de passar por um processo de configuração do servidor web, criei um arquivo de teste PHP simples:
<?php
$conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error;
else echo "Connected successfully";
phpinfo();
?>
Quando o executo, recebo este erro:
Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.
Eu nunca vi essa resposta de uma conexão antes. Como faço para corrigir se não consigo me conectar?
EDITAR
No terminal, digitei o comando:
mysql -u root -p
Isso me pediu minha senha (a atual), que coloquei. Agora tenho acesso aos comandos do mysql, mas tudo que eu tento resulta neste erro:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Como faço para redefinir a senha usando ALTER USER
?
php
mysql
macos
osx-elcapitan
CaribouCode
fonte
fonte
/usr/local/mysql/bin/mysqladmin -u root -p password
Respostas:
Então, finalmente encontrei a solução sozinho.
Em primeiro lugar, entrei no terminal e digitei:
mysql -u root -p
Isso pedia minha senha atual que eu digitei e me deu acesso para fornecer mais comandos mysql. Qualquer coisa que tentei daqui deu este erro:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Isso é confuso porque não consegui ver uma maneira de redefinir a senha usando a
ALTER USER
instrução, mas encontrei outra solução simples:SET PASSWORD = PASSWORD('xxxxxxxx');
fonte
Primeiro, eu uso:
Fornecendo minha senha atual para o 'root'. Próximo:
Mude
'new_password'
para uma nova senha para o usuário 'root'.Isso resolveu meu problema.
fonte
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
mysqladmin -u [username] -p password
trabalhou para mim no OS X El Capitan e MySQL 5.7.12 Community Server. Exemplo:Isso é semelhante à resposta de pavan sachi, mas com solicitações de senha.
Meu erro foi "# 1862 - Sua senha expirou. Para fazer login, você deve alterá-la usando um cliente que ofereça suporte a senhas expiradas." na tela de login do phpMyAdmin pela primeira vez.
fonte
mysqladmin -u [username] -p password
Vencimento da senha do MySQL
Redefinir a senha resolverá o problema apenas temporariamente. Do MySQL 5.7.4 a 5.7.10 (para encorajar melhor segurança - consulte MySQL: Política de expiração de senha ), o
default_password_lifetime
valor da variável padrão é 360 (1 ano). Para essas versões, se você não fizer alterações nesta variável (ou nas contas de usuário individuais), todas as senhas expiram após 360 dias.Portanto, a partir de um script, você pode obter a mensagem: "Sua senha expirou. Para fazer login, você deve alterá-la usando um cliente que ofereça suporte a senhas expiradas."
Para interromper a expiração automática da senha, faça login como root (
mysql -u root -p
) e, em seguida, para clientes que se conectam automaticamente ao servidor (por exemplo, scripts), altere as configurações de expiração da senha:ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;
OU você pode desativar a expiração automática de senha para todos os usuários :
SET GLOBAL default_password_lifetime = 0;
Como apontado por Mertaydin nos comentários, para tornar isso permanente, adicione a seguinte linha a um
my.cnf
arquivo que o MySQL lê na inicialização, no[mysqld]
grupo de configurações. A localização demy.cnf
depende da sua configuração (por exemplo, Windows ou Homebrew no OS X ou um instalador) e se você deseja isso por usuário no Unix ou global:[mysqld]
default_password_lifetime = 0
(Pode haver outras configurações aqui também ...)Veja a documentação do MySQL sobre arquivos de configuração .
fonte
Eu passei pelo mesmo problema recentemente ao instalar o mysql no mac os x capitan. Não encontrei a resposta correta aqui, então adicionei esta resposta.
O MySql nas versões atuais, gera uma senha temporária quando você instala o mysql. Use esta senha para definir uma nova senha usando o utilitário mysqladmin conforme abaixo;
Espero que ajude você e outras pessoas.
fonte
Basta baixar o ambiente de trabalho MySQL para efetuar login. Ele solicitará que você altere a senha imediatamente e automaticamente.
fonte
iniciar MYSQL em modo de segurança
Conecte-se ao servidor MYSQL
execute comandos SQL para redefinir a senha:
Última etapa, reinicie seu serviço mysql
fonte
Eu enfrentei esse problema há alguns dias. Para melhor solução para a versão 5.7 do MySQL; Faça login em seu console mysql e altere sua senha com o seguinte comando:
fonte
AVISO: isso permitirá que qualquer usuário faça o login
Eu tinha que tentar outra coisa. Visto que minha senha de root expirou e a alteração não era uma opção porque
Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
temporarly acrescentando
skip-grant-tables
sob[mysqld]
nomy.cnf
e reiniciar mysql fez o truquefonte
No Windows no phpmyadmin, olhe em Variáveis: default_password_lifetime e mude para 0 (em vez de 360), aproveite.
É possível que o mySQL leve novamente 360 dias, então adicione my.ini:
E reinicie o mysql.
fonte
Isso funcionou para mim:
fonte
reinicie o servidor MySQL com a opção --skip-grant-tables e depois defina uma nova senha de root
Agora, se você precisar, pode atualizar a tabela mysql.user (campo password_expired = 'N') para não expirar a senha.
fonte
mysql -u root
, recebo este erro:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
mysql -u root -p
Só para constar, consegui entrar alterando o primeiro comando para depois ele me pediu a senha que eu coloquei. Seu próximo comando não funcionou para mim porque diziaYou must reset your password using ALTER USER statement before executing this statement.
Todas essas respostas estão usando consoles Linux para acessar o MySQL.
Se você estiver no Windows e usando WAMP, pode começar abrindo o console do MySQL (
click WAMP icon->MySQL->MySQL console
).Em seguida, ele solicitará que você insira sua senha atual, insira-a.
E então digite
SET PASSWORD = PASSWORD('some_pass');
fonte
melhor solução fácil:
e então funciona bem.
fonte
Este trabalho para mim:
Fonte: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/
Faça login como root:
e então você desativa a expiração automática de senhas de todos os usuários:
fonte
A expiração da senha é um novo recurso no MySQL 5.6 ou 5.7.
A resposta é clara: use um cliente que seja capaz de alterar senhas expiradas (acho que o Sequel Pro pode fazer isso).
A biblioteca MySQLi obviamente não é capaz de alterar a senha expirada.
Se você tiver acesso limitado ao host local e tiver apenas um cliente de console, o cliente mysql padrão pode fazer isso.
fonte
Abra o console MySQL e digite SET PASSWORD = 'sua senha'; e então pressione a tecla ENTER que definirá sua senha definida para o usuário root.
Você só pode escrever SET PASSWORD = ''; que definirá a senha como em branco para o usuário root.
fonte
Eu fiz algo assim.
fonte
You must reset your password using ALTER USER statement before executing this statement.