Instalando o MySQL - UBUNTU 22.04 - 22.10

 

creditos: 

conteudo original em:

Passo 1 — Instalando o MySQL

No Ubuntu 22.04, você pode instalar o MySQL usando o repositório de pacotes APT. No momento da redação deste artigo, a versão do MySQL disponível no repositório padrão do Ubuntu é a versão 8.0.28.

Para instalá-lo, atualize o índice de pacotes em seu servidor, caso não tenha feito isso recentemente:

  1. sudo apt update

Em seguida, instale o mysql-serverpacote:

  1. sudo apt install mysql-server

Certifique-se de que o servidor esteja em execução usando o systemctl startcomando:

  1. sudo systemctl start mysql.service

Esses comandos instalarão e iniciarão o MySQL, mas não solicitarão que você defina uma senha ou faça qualquer outra alteração na configuração. Como isso deixa sua instalação do MySQL insegura, trataremos disso a seguir.

Passo 2 — Configurando o MySQL

Para novas instalações do MySQL, você desejará executar o script de segurança incluído no sistema de gerenciamento de banco de dados. Este script altera algumas das opções padrão menos seguras para coisas como desabilitar logins root remotos e remover usuários de amostra.

Aviso : a partir de julho de 2022, ocorrerá um erro ao executar o mysql_secure_installationscript sem nenhuma configuração adicional. O motivo é que esse script tentará definir uma senha para a conta root do MySQL da instalação, mas, por padrão nas instalações do Ubuntu, essa conta não é configurada para se conectar usando uma senha.

Antes de julho de 2022, esse script falhava silenciosamente após tentar definir a senha da conta raiz e continuar com o restante dos prompts. No entanto, no momento em que escrevo, o script retornará o seguinte erro depois que você inserir e confirmar uma senha:

Output
... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters. New password:

Isso levará o script a um loop recursivo do qual você só pode sair fechando a janela do terminal.

Como o mysql_secure_installationscript executa várias outras ações que são úteis para manter a instalação do MySQL segura, ainda é recomendável executá-lo antes de começar a usar o MySQL para gerenciar seus dados. No entanto, para evitar entrar nesse loop recursivo, você precisará primeiro ajustar como o usuário raiz do MySQL é autenticado.

Primeiro, abra o prompt do MySQL:

  1. sudo mysql

Em seguida, execute o seguinte ALTER USERcomando para alterar o método de autenticação do usuário raiz para um que use uma senha. O exemplo a seguir altera o método de autenticação para mysql_native_password:

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Depois de fazer essa alteração, saia do prompt do MySQL:

  1. exit

Depois disso, você pode executar o mysql_secure_installationscript sem problemas.

Depois que o script de segurança for concluído, você poderá reabrir o MySQL e alterar o método de autenticação do usuário raizauth_socket de volta para o padrão, . Para autenticar como usuário root do MySQL usando uma senha, execute este comando:

  1. mysql -u root -p

Em seguida, volte a usar o método de autenticação padrão usando este comando:

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

Isso significa que você pode se conectar novamente ao MySQL como seu usuário root usando o sudo mysqlcomando.

Execute o script de segurança com sudo:

  1. sudo mysql_secure_installation

Isso o levará a uma série de prompts onde você pode fazer algumas alterações nas opções de segurança da instalação do MySQL. O primeiro prompt perguntará se você gostaria de configurar o plug-in Validate Password, que pode ser usado para testar a força da senha de novos usuários do MySQL antes de considerá-los válidos.

Se você optar por configurar o plug-in de validação de senha, qualquer usuário do MySQL que você criar e se autenticar com uma senha precisará ter uma senha que satisfaça a política selecionada:

Output
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

Independentemente de você optar por configurar o plug-in de validação de senha, o próximo prompt será definir uma senha para o usuário root do MySQL . Digite e confirme uma senha segura de sua escolha:

Output
Please set the password for root here. New password: Re-enter new password:

Observe que, embora você tenha definido uma senha para o usuário root do MySQL, esse usuário não está configurado para autenticar com uma senha ao conectar-se ao shell do MySQL.

Se você usou o plug-in de validação de senha, receberá feedback sobre a força de sua nova senha. Em seguida, o script perguntará se você deseja continuar com a senha que acabou de inserir ou se deseja inserir uma nova. Supondo que você esteja satisfeito com a força da senha que acabou de inserir, digite Ypara continuar o script:

Output
Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

A partir daí, você pode pressionar YENTERaceitar os padrões para todas as perguntas subsequentes. Isso removerá alguns usuários anônimos e o banco de dados de teste, desativará os logins root remotos e carregará essas novas regras para que o MySQL respeite imediatamente as alterações feitas.

Depois que o script for concluído, sua instalação do MySQL estará protegida. Agora você pode criar um usuário de banco de dados dedicado com o cliente MySQL.

Etapa 3 — Criando um usuário MySQL dedicado e concedendo privilégios

Após a instalação, o MySQL cria uma conta de usuário root que você pode usar para gerenciar seu banco de dados. Esse usuário tem privilégios totais sobre o servidor MySQL, o que significa que tem controle total sobre todos os bancos de dados, tabelas, usuários e assim por diante. Por isso, é melhor evitar usar essa conta fora das funções administrativas. Esta etapa descreve como usar o usuário root do MySQL para criar uma nova conta de usuário e conceder privilégios a ela.

Em sistemas Ubuntu executando o MySQL 5.7 (e versões posteriores), o usuário root do MySQL é configurado para autenticar usando o auth_socketplug-in por padrão, em vez de uma senha. Este plug-in requer que o nome do usuário do sistema operacional que invoca o cliente MySQL corresponda ao nome do usuário MySQL especificado no comando, portanto, você deve invocar mysqlcom sudoprivilégios para obter acesso ao usuário root do MySQL:

  1. sudo mysql

Nota: Se você instalou o MySQL com outro tutorial e habilitou a autenticação de senha para root , você precisará usar um comando diferente para acessar o shell do MySQL. O seguinte executará seu cliente MySQL com privilégios de usuário regulares e você só obterá privilégios de administrador no banco de dados autenticando:

  1. mysql -u root -p

Depois de ter acesso ao prompt do MySQL, você pode criar um novo usuário com uma CREATE USERinstrução. Estes seguem esta sintaxe geral:

  1. CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

Depois CREATE USERde , você especifica um nome de usuário. Isso é imediatamente seguido por um @sinal e, em seguida, o nome do host do qual esse usuário se conectará. Se você planeja acessar esse usuário apenas localmente a partir do seu servidor Ubuntu, pode especificar localhostColocar o nome de usuário e o host entre aspas simples nem sempre é necessário, mas isso pode ajudar a evitar erros.

Você tem várias opções quando se trata de escolher o plug-in de autenticação do usuário. auth_socketplug-in mencionado anteriormente pode ser conveniente, pois fornece segurança forte sem exigir que usuários válidos digitem uma senha para acessar o banco de dados. Mas também evita conexões remotas, o que pode complicar as coisas quando programas externos precisam interagir com o MySQL.

Como alternativa, você pode omitir totalmente a parte da sintaxe para que o usuário seja autenticado com o plug-in padrão do MySQL, A documentação do MySQL recomenda este plug-in para usuários que desejam fazer login com uma senha devido aos seus fortes recursos de segurança.WITH authentication_plugincaching_sha2_password

Execute o seguinte comando para criar um usuário que se autentique com caching_sha2_passwordCertifique-se de alterar sammypara seu nome de usuário preferido e passwordpara uma senha forte de sua escolha:

  1. CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Nota : Há um problema conhecido com algumas versões do PHP que causa problemas com arquivos caching_sha2_passwordmysql_native_passwordSe você planeja usar este banco de dados com um aplicativo PHP — phpMyAdmin, por exemplo — você pode querer criar um usuário que se autentique com o plug-in mais antigo, embora ainda seguro :

  1. CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Se você não tiver certeza, sempre poderá criar um usuário que se autentique caching_sha2_pluginALTERposteriormente com este comando:

  1. ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Depois de criar seu novo usuário, você pode conceder a ele os privilégios apropriados. A sintaxe geral para conceder privilégios de usuário é a seguinte:

  1. GRANT PRIVILEGE ON database.table TO 'username'@'host';

PRIVILEGEvalor nesta sintaxe de exemplo define quais ações o usuário tem permissão para executar no especificado databasetableVocê pode conceder vários privilégios ao mesmo usuário em um comando, separando cada um com uma vírgula. Você também pode conceder privilégios de usuário globalmente inserindo asteriscos ( *) no lugar dos nomes do banco de dados e da tabela. No SQL, os asteriscos são caracteres especiais usados ​​para representar “todos” os bancos de dados ou tabelas.

Para ilustrar, o comando a seguir concede a um usuário privilégios globais para CREATEALTER, e DROPbancos de dados, tabelas e usuários, bem como o poder para INSERTUPDATEDELETEdados de qualquer tabela no servidor. Ele também concede ao usuário a capacidade de consultar dados com SELECT, criar chaves estrangeiras com a palavra- REFERENCESchave e executar FLUSHoperações com o RELOADprivilégio. No entanto, você só deve conceder aos usuários as permissões de que precisam, portanto, sinta-se à vontade para ajustar os privilégios de seu próprio usuário conforme necessário.

Você pode encontrar a lista completa de privilégios disponíveis na documentação oficial do MySQL .

Execute esta GRANTinstrução, substituindo sammypelo seu próprio nome de usuário do MySQL, para conceder estes privilégios ao seu usuário:

  1. GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Observe que esta declaração também inclui WITH GRANT OPTIONIsso permitirá que seu usuário MySQL conceda quaisquer permissões que tenha a outros usuários no sistema.

Aviso : Alguns usuários podem querer conceder o ALL PRIVILEGESprivilégio ao usuário do MySQL, o que fornecerá a eles amplos privilégios de superusuário semelhantes aos privilégios do usuário root , da seguinte forma:

  1. GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Esses privilégios amplos não devem ser concedidos levianamente , pois qualquer pessoa com acesso a esse usuário do MySQL terá controle total sobre todos os bancos de dados no servidor.

Depois disso, é uma boa prática executar o FLUSH PRIVILEGEScomando. Isso liberará qualquer memória que o servidor armazenou em cache como resultado das instruções CREATE USERe anteriores GRANT:

  1. FLUSH PRIVILEGES;

Então você pode sair do cliente MySQL:

  1. exit

No futuro, para fazer login como seu novo usuário MySQL, você usaria um comando como o seguinte:

  1. mysql -u sammy -p

-psinalizador fará com que o cliente MySQL solicite sua senha de usuário do MySQL para autenticar.

Finalmente, vamos testar a instalação do MySQL.

Etapa 4 — Testando o MySQL

Independentemente de como você o instalou, o MySQL deve ter iniciado a execução automaticamente. Para testar isso, verifique seu status.

  1. systemctl status mysql.service

A saída será semelhante à seguinte:

Output
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-04-11 16:04:39 UTC; 2h 36min ago Process: 2593 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 2601 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1119) Memory: 354.3M CPU: 19.944s CGroup: /system.slice/mysql.service └─2601 /usr/sbin/mysqld

Se o MySQL não estiver em execução, você pode iniciá-lo com sudo systemctl start mysql.

Para uma verificação adicional, você pode tentar conectar-se ao banco de dados usando a mysqladminferramenta, que é um cliente que permite executar comandos administrativos. Por exemplo, este comando diz para conectar como um usuário do MySQL chamado sammy ( ), solicitar uma senha ( ) e retornar a versão. Certifique-se de alterar para o nome do seu usuário MySQL dedicado e digite a senha desse usuário quando solicitado:-u sammy-psammy

  1. sudo mysqladmin -p -u sammy version

Abaixo está um exemplo da saída:

Output
mysqladmin Ver 8.0.28-0ubuntu4 for Linux on x86_64 ((Ubuntu)) Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 8.0.28-0ubuntu4 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 2 hours 31 min 57 sec Threads: 2 Questions: 25 Slow queries: 0 Opens: 160 Flush tables: 3 Open tables: 79 Queries per second avg: 0.000

Isso significa que o MySQL está funcionando.

Comentários

Postagens mais visitadas