Ansible

Como definir a senha raiz do MySQL usando Ansible

Como definir a senha raiz do MySQL usando Ansible
A maioria das distribuições Linux, incluindo CentOS / RHEL e Ubuntu / Debian, não define a senha raiz do MySQL automaticamente. Como a senha de root do MySQL não é definida automaticamente, é possível fazer login no console do MySQL como root sem qualquer senha. Isso não é muito bom para a segurança.

No CentOS / RHEL, você pode facilmente executar o mysql_secure_installation comando para configurar uma senha de root. Mas no Ubuntu 20.04 LTS, este 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 de root do MySQL 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 CentOS / RHEL 8 ou Ubuntu 20.04 host LTS configurado para automação Ansible.

Existem muitos artigos no LinuxHint dedicados à instalação do Ansible e à configuração de hosts para automação do Ansible. Você pode verificar se necessário.

Configurando um Diretório de Projeto

Antes de prosseguirmos, iremos configurar 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 subdiretórios necessários (em seu diretório de trabalho atual), execute o seguinte comando:

$ mkdir -pv mysql-root-pass / playbooks, host_vars, group_vars

Depois que o diretório do projeto for criado, navegue até o diretório do projeto, da seguinte maneira:

$ cd mysql-root-pass /

Criar uma hospedeiros arquivo de inventário, como segue:

hosts $ nano

Adicione o IP do host ou nomes DNS de seu CentOS / RHEL 8 ou Ubuntu 20.04 hosts LTS no arquivo de inventário (um host por linha), conforme mostrado na imagem abaixo.

Quando terminar, salve o arquivo pressionando + X, seguido pela Y e .

Aqui, 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 LTS host, vm7.nodekite.com.

Crie um arquivo de configuração Ansible ansible.cfg no diretório do seu projeto, da seguinte maneira:

$ nano ansible.cfg

Digite as seguintes linhas no ansible.cfg Arquivo:

[padrões]
inventário = hosts
host_key_checking = False

Quando terminar, salve o ansible.cfg arquivo pressionando + X, seguido pela Y e .

Tente pingar todos os hosts que você adicionou em seu hospedeiros arquivo de inventário, como segue:

$ ansible all -u ansible -m ping

Como você pode ver, o meu host 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 root no CentOS / RHEL 8

Esta seção mostrará como instalar o servidor de banco de dados MySQL e configurar uma senha root no CentOS 8 usando Ansible. O mesmo procedimento deve funcionar no RHEL 8.

Crie o novo manual do Ansible install_mysql_centos8.yaml no manuais / diretório, da seguinte forma:

$ nano playbooks / install_mysql_centos8.yaml

Digite as seguintes linhas no install_mysql_centos8.yaml Arquivo:

- hosts: centos8
usuário: ansible
tornar verdade
tarefas:
- nome: Atualizar cache do repositório do pacote DNF
dnf:
update_cache: True
- nome: Instale o servidor MySQL no CentOS 8
dnf:
nome: mysql-server
estado: presente
- nome: Instale o cliente MySQL no CentOS 8
dnf:
nome: mysql
estado: presente
- nome: Certifique-se de que o serviço mysqld está em execução
serviço:
nome: mysqld
estado: iniciado
habilitado: Verdadeiro

- nome: Instale a biblioteca python3-PyMySQL
dnf:
nome: python3-PyMySQL
estado: presente

Quando terminar, pressione + X, seguido pela Y e , para salvar o install_mysql_centos8.yaml Arquivo.

A linha abaixo diz ao Ansible para executar o manual install_mysql_centos8.yaml em cada host no centos8 grupo.

Aqui, eu defini 5 tarefas.

A primeira tarefa atualiza o cache do repositório de pacotes DNF do CentOS 8 usando o Ansible dnf módulo.

A segunda tarefa instala o pacote do servidor MySQL servidor mysql 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 foi adicionado à inicialização do sistema para que seja iniciado automaticamente na inicialização.

A quinta tarefa instala a biblioteca Python 3 MySQL pymysql. Isso é necessário para acessar o MySQL de Ansible.

Execute o install_mysql_centos8.yaml manual, como segue:

$ ansible-playbook playbooks / install_mysql_centos8.yaml

Como você pode ver, o manual install_mysql_centos8.yaml correu com sucesso.

No meu host CentOS 8, posso acessar o MySQL como o raiz usuário sem senha, como você pode ver na imagem abaixo:

$ sudo mysql -u root

Agora que o servidor MySQL está instalado, é hora de configurar uma senha raiz para o servidor MySQL.

Crie o novo arquivo de variável de grupo centos8 (no group_vars / diretório) para o centos8 grupo, como segue:

$ nano group_vars / centos8

Adicionar uma nova variável mysql_pass com a senha de root (no meu caso, segredo) que você gostaria de definir, conforme mostrado na captura de tela abaixo.

Quando terminar, pressione + X, seguido pela Y e , para salvar o arquivo.

Crie um novo manual set_root_pass_centos8.yaml com o seguinte comando:

$ nano playbooks / set_root_pass_centos8.yaml

Digite as seguintes linhas no set_root_pass_centos8.yaml Arquivo:

- hosts: centos8
usuário: ansible
tornar verdade
tarefas:
- nome: Definir senha de root do MySQL
mysql_user:
login_host: 'localhost'
login_user: 'root'
senha de login: "
nome: 'root'
senha: 'mysql_pass'
estado: presente

Quando terminar, pressione + X, seguido pela Y e , para salvar o set_root_pass_centos8.yaml Arquivo.

Este manual usa o mysql_user Módulo Ansible para definir uma senha de root do MySQL.

O login_host, login_user, e senha de login opções do mysql_user O módulo Ansible é usado para definir o nome de host, nome de usuário e senha de login do MySQL atual, respectivamente. Por padrão, o nome de host de login do MySQL (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 O módulo Ansible é usado para definir uma nova senha de root do MySQL, aqui. A senha raiz do MySQL será o valor do mysql_pass variável de grupo que foi definida anteriormente.

Execute o manual set_root_pass_centos8.yaml com o seguinte comando:

$ ansible-playbook playbooks / set_root_pass_centos8.yaml

O manual foi executado com sucesso, conforme visto na captura de tela abaixo:

Como você pode ver, não consigo mais entrar no servidor MySQL sem uma senha de root.

Para fazer login no servidor MySQL como o raiz usuário com uma senha, execute o seguinte comando em seu host CentOS 8:

$ sudo mysql -u root -p

Digite a senha de root que você definiu usando Ansible e pressione .

Você deve estar logado no servidor MySQL como o raiz do utilizador.

Instalação do MySQL e configuração da senha root no Ubuntu 20.04 LTS

Esta seção mostrará como instalar o servidor de banco de dados MySQL e configurar uma senha root no Ubuntu 20.04 LTS usando Ansible.

Crie um novo manual do Ansible install_mysql_ubuntu20.yaml no manuais / diretório, da seguinte forma:

$ nano playbooks / install_mysql_ubuntu20.yaml

Digite as seguintes linhas no install_mysql_ubuntu20.yaml Arquivo:

- hosts: ubuntu20
usuário: ansible
tornar verdade
tarefas:
- nome: Atualizar cache do repositório do pacote APT
apt:
update_cache: True
- nome: Instale o servidor MySQL no Ubuntu 20.04 LTS
apt:
nome: mysql-server
estado: presente
- nome: Instale o cliente MySQL no Ubuntu 20.04 LTS
apt:
nome: mysql-client
estado: presente
- nome: Certifique-se de que o serviço mysql esteja em execução
serviço:
nome: mysql
estado: iniciado
habilitado: Verdadeiro
- nome: Instale a biblioteca python3-pymysql
apt:
nome: python3-pymysql
estado: presente

Quando terminar, pressione + X, seguido pela Y e , para salvar o install_mysql_ubuntu20.yaml Arquivo.

A linha a seguir diz ao Ansible para executar o manual install_mysql_ubuntu20.yaml em cada host no ubuntu20 grupo:

Aqui, eu defini 5 tarefas.

A primeira tarefa atualiza o cache do repositório de pacotes APT do Ubuntu 20.04 LTS usando o Ansible apto módulo.

A segunda tarefa instala o pacote do servidor MySQL servidor mysql usando o Ansible apto módulo.

A terceira tarefa instala o pacote do cliente MySQL mysql usando o Ansible apto módulo.

A quarta tarefa garante que o mysql o serviço está em execução e foi adicionado à inicialização do sistema para que seja iniciado automaticamente na inicialização.

A quinta tarefa instala a biblioteca Python 3 MySQL pymysql. Isso é necessário para acessar o MySQL do Ansible.

Execute o install_mysql_ubuntu20.yaml manual, como segue:

$ ansible-playbook playbooks / install_mysql_ubuntu20.yaml

Como você pode ver, o manual install_mysql_ubuntu20.yaml correu com sucesso.

No meu Ubuntu 20.04 LTS host, posso acessar o MySQL como o raiz usuário sem senha, como você pode ver na imagem abaixo.

$ sudo mysql -u root

Agora que o servidor MySQL está instalado, é hora de configurar uma senha raiz 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 / ubuntu20

Adicionar uma nova variável, mysql_pass, com a senha de root (no meu caso, muito secreto) que você gostaria de definir, conforme mostrado na captura de tela abaixo.

Quando 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.yaml

Digite as seguintes linhas no set_root_pass_ubuntu20.yaml Arquivo:

- hosts: ubuntu20
usuário: ansible
tornar verdade
tarefas:
- nome: Altere o plugin de autenticação do usuário root do MySQL para mysql_native_password
shell: mysql -u root -e 'ATUALIZAR mysql.usuário SET plugin = "mysql_native_password"
WHERE usuário = "root" AND host = "localhost" '
- nome: Flush Privileges
shell: mysql -u root -e 'FLUSH PRIVILEGES'
- nome: Definir senha raiz do MySQL
mysql_user:
login_host: 'localhost'
login_user: 'root'
senha de login: "
nome: 'root'
senha: 'mysql_pass'
estado: presente

Quando 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 muda 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 de root do MySQL.

Na terceira tarefa, o login_host, login_user, e senha de login opções do mysql_user O módulo Ansible é usado para definir o nome de host, nome de usuário e senha de login do MySQL atual, respectivamente. Por padrão, o nome de host de login do MySQL (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 O módulo Ansible é usado para definir uma nova senha de root do MySQL. A senha raiz do MySQL será o valor do mysql_pass variável de grupo, que 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.yaml

O manual foi executado com sucesso, como você pode ver na captura de tela abaixo:

Como você pode ver, não consigo mais entrar no servidor MySQL sem uma senha de root.

$ sudo mysql -u root

Para fazer login no servidor MySQL como usuário root com a senha definida, execute o seguinte comando em seu Ubuntu 20.04 Host LTS:

$ sudo mysql -u root -p

Digite a senha de root que você definiu usando Ansible e pressione .

Você deve estar logado no servidor MySQL como usuário root.

Conclusão

Este artigo mostrou como instalar o servidor MySQL e definir uma senha de root do MySQL 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 raiz do MySQL. Você pode usar este módulo para alterar a senha raiz do MySQL, criar novos usuários MySQL e, portanto, muitas outras funções de gerenciamento de usuário.

Para obter mais informações sobre o mysql_user módulo, verifique a documentação oficial do módulo mysql_user.

Controle e gerencie o movimento do mouse entre vários monitores no Windows 10
Gerenciador de mouse com tela dupla permite que você controle e configure o movimento do mouse entre vários monitores, diminuindo seus movimentos pert...
WinMouse permite que você personalize e melhore o movimento do ponteiro do mouse no PC com Windows
Se você quiser melhorar as funções padrão do ponteiro do mouse, use um freeware WinMouse. Ele adiciona mais recursos para ajudá-lo a obter o máximo do...
O botão esquerdo do mouse não funciona no Windows 10
Se você estiver usando um mouse dedicado com seu laptop ou computador desktop, mas o o botão esquerdo do mouse não funciona no Windows 10/8/7 por algu...