No CentOS/Rhel, você pode executar facilmente o mysql_secure_installation comando para configurar uma senha root. Mas no Ubuntu 20.04 LTS, esse método não funciona, pois o MySQL usa um plugin de autenticação diferente para o raiz do utilizador.
Este artigo mostrará como configurar uma senha do MySQL Root no CentOS 8 e Ubuntu 20.04 Distribuições LTS Linux usando módulos Ansible.
Pré -requisitos
Se você quiser experimentar os exemplos incluídos neste artigo,
1) Você deve ter o Ansible instalado em seu computador.
2) Você deve ter pelo menos um host do CentOS/RHEL 8 ou um Ubuntu 20.04 Host LTS configurado para Ansible Automation.
Existem muitos artigos sobre Linuxhint dedicados à instalação do Ansible e configurando hosts para Ansible Automation. Você pode verificar isso se necessário.
Configurando um diretório de projeto
Antes de seguirmos em frente, configuraremos um novo diretório de projeto Ansible, apenas para manter as coisas um pouco organizadas.
Para criar o diretório do projeto mysql-root-pass/ E todos os subdiretos necessários (em seu diretório de trabalho atual), execute o seguinte comando:
$ mkdir -pv mysql-root-pass/playbooks, host_vars, group_varsDepois que o diretório do projeto for criado, navegue até o diretório do projeto, como segue:
$ CD mysql-root-pass/Criar uma anfitriões Arquivo de inventário, como segue:
$ nano hostsAdicione os nomes IP do host ou DNS do seu CentOS/Rhel 8 ou Ubuntu 20.04 Hosts LTS no arquivo de inventário (um host por linha), como mostrado na captura de tela abaixo.
Depois de terminar, salve o arquivo pressionando + X, seguido pela Y e .
Aqui, eu criei dois grupos, CENTOS8, e Ubuntu20. O CENTOS8 Grupo tem o nome DNS do meu host CentOS 8, VM3.NodeKite.com; e a Ubuntu20 Grupo tem o nome DNS do meu Ubuntu 20.04 Host LTS, VM7.NodeKite.com.
Crie um arquivo de configuração Ansible Ansible.cfg No seu diretório de projeto, como segue:
$ Nano Ansible.cfgDigite as seguintes linhas no Ansible.cfg arquivo:
[Padrões]Depois de terminar, salve o Ansible.cfg arquivo pressionando + X, seguido pela Y e .
Tente ping em todos os hosts que você adicionou em seu anfitriões Arquivo de inventário, como segue:
$ Ansible All -u Ansible -M Ping
Como você pode ver, o host My Centos 8 (VM3.NodeKite.com) e Ubuntu 20.04 Host LTS (VM7.NodeKite.com) são acessíveis.
Instalando o MySQL e configurando a senha raiz no CentOS/RHEL 8
Esta seção mostrará como instalar o MySQL Database Server e configurar uma senha root no CentOS 8 usando Ansible. O mesmo procedimento deve funcionar no RHEL 8.
Crie o novo manual Ansible Install_Mysql_Centos8.Yaml no Playbooks/ Diretório, como segue:
$ Nano Playbooks/Install_Mysql_Centos8.YamlDigite as seguintes linhas no Install_Mysql_Centos8.Yaml arquivo:
- Hosts: CentOS8Depois de terminar, pressione + X, seguido pela Y e , Para salvar o Install_Mysql_Centos8.Yaml arquivo.
A linha abaixo diz Ansible para executar o manual Install_Mysql_Centos8.Yaml Em todos os anfitriões no CENTOS8 grupo.
Aqui, eu defini 5 tarefas.
A primeira tarefa atualiza o cache do repositório de pacote DNF do CentOS 8 usando o Ansible DNF módulo.
A segunda tarefa instala o pacote MySQL Server MySQL-Server usando o Ansible DNF módulo.
A terceira tarefa instala o pacote do cliente MySQL mysql usando o Ansible DNF módulo.
A quarta tarefa garante que o mysqld O serviço está em execução e que foi adicionado à inicialização do sistema para iniciar automaticamente na inicialização.
A quinta tarefa instala a biblioteca Python 3 MySQL pymysql. Isso é necessário para acessar o MySQL da Ansible.
Execute o Install_Mysql_Centos8.Yaml Manual, como segue:
$ Ansible-Playbook Playbooks/Install_Mysql_Centos8.YamlComo você pode ver, o manual Install_Mysql_Centos8.Yaml correu com sucesso.
No meu host do CentOS 8, posso acessar o mysql como o raiz Usuário sem senha, como você pode ver na captura de tela abaixo:
$ sudo mysql -u rootAgora que o servidor MySQL está instalado, é hora de configurar uma senha root para o servidor MySQL.
Crie o novo arquivo variável de grupo CENTOS8 (no group_vars/ diretório) para o CENTOS8 Grupo, como segue:
$ nano group_vars/CentOS8Adicione uma nova variável mysql_pass com a senha raiz (no meu caso, segredo) você gostaria de definir, conforme mostrado na captura de tela abaixo.
Depois de terminar, pressione + X, seguido pela Y e
Crie um novo manual SET_ROOT_PASP_CENTOS8.Yaml com o seguinte comando:
$ nano Playbooks/set_root_pass_Centos8.YamlDigite as seguintes linhas no SET_ROOT_PASP_CENTOS8.Yaml arquivo:
- Hosts: CentOS8Depois de terminar, pressione + X, seguido pela Y e , Para salvar o SET_ROOT_PASP_CENTOS8.Yaml arquivo.
Este manual usa o mysql_user Módulo Ansible para definir uma senha do MySQL Root.
O login_host, login_user, e senha de login opções do mysql_user Módulo Ansible são usados para definir o nome atual do host MySQL Login, nome de usuário e senha, respectivamente. Por padrão, o MySQL Login HostName (login_host) é o LocalHost, o nome de usuário de login (login_user) é o raiz, e o login senha (senha de login) está vazia (”) no CentOS 8.
O senha opção do mysql_user Módulo Ansible é usado para definir uma nova senha do MySQL Root, aqui. A senha do MySQL Root será o valor do mysql_pass variável de grupo que foi definida mais cedo.
Execute o manual SET_ROOT_PASP_CENTOS8.Yaml com o seguinte comando:
$ Ansible-Playbook Playbooks/Set_Root_Pass_Centos8.YamlO manual foi executado com sucesso, como visto na captura de tela abaixo:
Como você pode ver, não posso mais fazer login no servidor MySQL sem uma senha root.
Para fazer login no servidor MySQL como o raiz Usuário com uma senha, execute o seguinte comando no seu host do CentOS 8:
$ sudo mysql -u root -p
Digite a senha raiz que você definiu usando Ansible e pressione .
Você deve estar conectado ao servidor MySQL como o raiz do utilizador.
Instalando o MySQL e configurando a senha root no Ubuntu 20.04 LTS
Esta seção mostrará como instalar o MySQL Database Server e configurar uma senha root no Ubuntu 20.04 LTS usando Ansible.
Crie um novo manual Ansible install_mysql_ubuntu20.Yaml no Playbooks/ Diretório, como segue:
$ nano Playbooks/install_mysql_ubuntu20.YamlDigite as seguintes linhas no install_mysql_ubuntu20.Yaml arquivo:
- Hosts: Ubuntu20Depois de terminar, pressione + X, seguido pela Y e , Para salvar o install_mysql_ubuntu20.Yaml arquivo.
A linha a seguir diz a Ansible para executar o manual install_mysql_ubuntu20.Yaml Em todos os anfitriões no Ubuntu20 grupo:
Aqui, eu defini 5 tarefas.
A primeira tarefa atualiza o cache do repositório do pacote apt do Ubuntu 20.04 LTS usando o Ansible apt módulo.
A segunda tarefa instala o pacote MySQL Server MySQL-Server usando o Ansible apt módulo.
A terceira tarefa instala o pacote do cliente MySQL mysql usando o Ansible apt módulo.
A quarta tarefa garante que o mysql O serviço está em execução e que foi adicionado à inicialização do sistema para iniciar automaticamente na inicialização.
A quinta tarefa instala a biblioteca Python 3 MySQL pymysql. Isso é necessário para acessar o MySQL da Ansible.
Execute o install_mysql_ubuntu20.Yaml Manual, como segue:
$ Ansible-Playbook Playbooks/install_mysql_ubuntu20.YamlComo você pode ver, o manual install_mysql_ubuntu20.Yaml correu com sucesso.
No meu Ubuntu 20.04 host LTS, eu posso acessar o mysql como o raiz Usuário sem senha, como você pode ver na captura de tela abaixo.
$ sudo mysql -u rootAgora que o servidor MySQL está instalado, é hora de configurar uma senha root para o servidor MySQL.
Crie um novo arquivo de variável de grupo Ubuntu20 (no group_vars/ diretório) para o Ubuntu20 Grupo, como segue:
$ nano group_vars/ubuntu20Adicione uma nova variável, mysql_pass, com a senha raiz (no meu caso, Extemcret) que você gostaria de definir, conforme mostrado na captura de tela abaixo.
Depois de terminar, pressione + X, seguido pela Y e , Para salvar o arquivo.
Crie um novo manual set_root_pass_ubuntu20.Yaml com o seguinte comando:
$ nano Playbooks/set_root_pass_ubuntu20.YamlDigite as seguintes linhas no set_root_pass_ubuntu20.Yaml arquivo:
- Hosts: Ubuntu20Depois de terminar, pressione + X, seguido pela Y e , Para salvar o set_root_pass_ubuntu20.Yaml arquivo.
Aqui, eu defini três tarefas.
A primeira tarefa altera o plugin de autenticação do MySQL raiz usuário de auth_socket para mysql_native_password.
A segunda tarefa recarrega todos os privilégios.
A terceira tarefa usa o mysql_user Módulo Ansible para definir uma senha do MySQL Root.
Na terceira tarefa, o login_host, login_user, e senha de login opções do mysql_user Módulo Ansible são usados para definir o nome atual do host MySQL Login, nome de usuário e senha, respectivamente. Por padrão, o MySQL Login HostName (login_host) é LocalHost, o nome de usuário de login (login_user) é raiz, e o login senha (senha de login) está vazia (”) no sistema.
Aqui o senha opção do mysql_user Módulo Ansible é usado para definir uma nova senha do MySQL Root. A senha do MySQL Root será o valor do mysql_pass variável de grupo, que eu defini anteriormente, no group_vars/ubuntu20 arquivo.
Execute o manual set_root_pass_ubuntu20.Yaml com o seguinte comando:
$ Ansible-Playbook Playbooks/set_root_pass_ubuntu20.YamlO manual foi executado com sucesso, como você pode ver na captura de tela abaixo:
Como você pode ver, não posso mais fazer login no servidor MySQL sem uma senha root.
$ sudo mysql -u rootPara fazer login no servidor MySQL como o usuário root com a senha definida, execute o seguinte comando no seu Ubuntu 20.04 Host LTS:
$ sudo mysql -u root -pDigite a senha raiz que você definiu usando Ansible e pressione .
Você deve estar conectado ao servidor MySQL como o usuário root.
Conclusão
Este artigo mostrou como instalar o servidor MySQL e definir uma senha do MySQL Root no CentOS 8 e Ubuntu 20.04 Distribuições LTS Linux usando Ansible. Este artigo usou o mysql_user Módulo Ansible para configurar a senha do MySQL Root. Você pode usar este módulo para alterar a senha do MySQL Root, criar novos usuários do MySQL e, portanto, muitas outras funções de gerenciamento de usuários.
Para mais informações sobre o mysql_user Módulo, verifique a documentação oficial do módulo MySQL_USER.