MySQL 5.7.17 em execução no Linux Mint (não é possível iniciar o mysqld_safe - skip-grant-privileges

2

Exclusos acidentalmente do MySQL 5.7.17 (linux) privilégios para root. Ainda posso fazer login como root. Apenas não posso fazer muito. Eu pesquisei na web por dias procurando uma maneira de iniciar o mysql_safe - skip-grant-privileges, mas nenhuma das sugestões funciona.

Um artigo no MySQL doc sugeriu um caminho diferente que substituiu mysql_safe . Parece muito complicado, e não posso arriscar estragar meu sistema com outra coisa que não funcionou.

Tenho cerca de uma semana e depois preciso que o sistema funcione novamente. Querendo saber se eu posso excluir o MySQL e fazer uma nova instalação, as tabelas poderiam ser acessadas pela nova instalação?

    
por Dave Henzler 02.07.2018 / 20:23

1 resposta

0

B.5.3.2.2 Redefinindo a Senha Raiz: Sistemas Unix e Semelhantes ao Unix

No Unix, use o seguinte procedimento para redefinir a senha para a conta 'root' @ 'localhost' do MySQL. Para alterar a senha de uma conta raiz com uma parte de nome de host diferente, modifique as instruções para usar esse nome de host.

As instruções assumem que você iniciará o servidor MySQL a partir da conta de login Unix que você normalmente usa para executá-lo. Por exemplo, se você executar o servidor usando a conta de login mysql, você deve efetuar login como mysql antes de usar as instruções. Alternativamente, você pode logar como root, mas neste caso você deve iniciar o mysqld com a opção --user=mysql . Se você iniciar o servidor como raiz sem usar --user=mysql , o servidor poderá criar arquivos de propriedade da raiz no diretório de dados, como arquivos de log, e eles poderão causar problemas relacionados à permissão para futuras inicializações do servidor. Se isso acontecer, você precisará alterar a propriedade dos arquivos para o mysql ou removê-los.

Log on to your system as the Unix user that the MySQL server runs as (for example, mysql).

Stop the MySQL server if it is running. Locate the .pid file that contains the server's process ID. The exact location and name of this file depend on your distribution, host name, and configuration. Common locations are /var/lib/mysql/, /var/run/mysqld/, and /usr/local/mysql/data/. Generally, the file name has an extension of .pid and begins with either mysqld or your system's host name.

Stop the MySQL server by sending a normal kill (not kill -9) to the mysqld process. Use the actual path name of the .pid file in the following command:

shell> kill 'cat /mysql-data-directory/host_name.pid'

Use backticks (não aspas para frente) com o comando cat. Isso faz com que a saída de cat seja substituída no comando kill.

Crie um arquivo de texto contendo a instrução de atribuição de senha em uma única linha. Substitua a senha pela senha que você deseja usar.

MySQL 5.7.6 e posterior:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 e anteriores:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Salve o arquivo. Este exemplo assume que você nomeie o arquivo / home / me / mysql-init. O arquivo contém a senha, portanto, não salve-o onde possa ser lido por outros usuários. Se você não está logado como mysql (o usuário que o servidor executa como), certifique-se de que o arquivo tenha permissões que permitam que o mysql o leia.

Inicie o servidor MySQL com a opção --init-file especial:

shell> mysqld --init-file=/home/me/mysql-init &

O servidor executa o conteúdo do arquivo nomeado pela opção --init-file na inicialização, alterando a senha da conta 'root' @ 'localhost'.

Outras opções também podem ser necessárias, dependendo de como você normalmente inicia seu servidor. Por exemplo, --defaults-file pode ser necessário antes de --init-file .

After the server has started successfully, delete /home/me/mysql-init.

Agora você deve conseguir se conectar ao servidor MySQL como root usando a nova senha. Pare o servidor e reinicie-o normalmente.

Se a instrução ALTER USER falhar na redefinição da senha, tente repetir o procedimento usando as seguintes instruções para modificar a tabela do usuário diretamente:

UPDATE mysql.user
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

B.5.3.2.3 Redefinindo a senha do root: instruções genéricas

As seções anteriores fornecem instruções de redefinição de senha especificamente para sistemas Windows e Unix e Unix-like. Alternativamente, em qualquer plataforma, você pode redefinir a senha usando o cliente mysql (mas essa abordagem é menos segura):

Stop the MySQL server if necessary, then restart it with the --skip-grant-tables option. This enables anyone to connect without a password and with all privileges, and disables account-management statements such as ALTER USER and SET PASSWORD. Because this is insecure, you might want to use --skip-grant-tables in conjunction with --skip-networking to prevent remote clients from connecting.

Connect to the MySQL server using the mysql client; no password is necessary because the server was started with --skip-grant-tables:

shell> mysql

No cliente mysql, diga ao servidor para recarregar as tabelas de permissões para que as instruções de gerenciamento de conta funcionem:

mysql> FLUSH PRIVILEGES;

Em seguida, altere a senha da conta 'root' @ 'localhost'. Substitua a senha pela senha que você deseja usar. Para alterar a senha de uma conta raiz com uma parte de nome de host diferente, modifique as instruções para usar esse nome de host.

MySQL 5.7.6 e posterior:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 e anteriores:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Agora você deve conseguir se conectar ao servidor MySQL como root usando a nova senha. Pare o servidor e reinicie-o normalmente (sem as opções --skip-grant-tables e --skip-networking ).

Se a instrução ALTER USER falhar na redefinição da senha, tente repetir o procedimento usando as seguintes instruções para modificar a tabela do usuário diretamente:

UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass')
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

PREVIR PARA CIMA PRÓXIMO

    
por 03.07.2018 / 05:28