ubuntu에 ansible과 함께 MySQL 설치
부랑 우분투에 ansible로 MySQL을 설치하는 데 문제가 있습니다.
이것은 MySQL 부분입니다.
---
- name: Install MySQL
apt:
name: "{{ item }}"
with_items:
- python-mysqldb
- mysql-server
- name: copy .my.cnf file with root password credentials
template:
src: templates/root/.my.cnf
dest: ~/.my.cnf
owner: root
mode: 0600
- name: Start the MySQL service
service:
name: mysql
state: started
enabled: true
# 'localhost' needs to be the last item for idempotency, see
# http://ansible.cc/docs/modules.html#mysql-user
- name: update mysql root password for all root accounts
mysql_user:
name: root
host: "{{ item }}"
password: "{{ mysql_root_password }}"
priv: "*.*:ALL,GRANT"
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
그리고 나는 이 오류가 있습니다.
failed: [default] => (item=vagrant-ubuntu-trusty-64) => {"failed": true, "item": "vagrant-ubuntu-trusty-64"}
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
failed: [default] => (item=127.0.0.1) => {"failed": true, "item": "127.0.0.1"}
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
failed: [default] => (item=::1) => {"failed": true, "item": "::1"}
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
failed: [default] => (item=localhost) => {"failed": true, "item": "localhost"}
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
나의 .my.cnf는
[client]
user=root
password={{ mysql_root_password }}
서버에 복사할 경우
[client]
user=root
password=root
왜 ~/.my.cnf가 생성되었는지 이해할 수 없습니다.
프로젝트 깃허브
감사해요.
언제mysql-server
무턱대고 설치되고 비밀번호가 없습니다.그러므로 만들기 위해서는.my.cnf
work, 빈 비밀번호 줄이 있어야 합니다.제가 테스트한 것은 다음과 같습니다..my.cnf
:
[client]
user=root
password=
또 약간 이상한 느낌이 들 정도입니다..my.cnf
당신의vagrant
루트가 소유하고 루트로만 읽을 수 있는 사용자 디렉토리입니다.
암호가 공백인지 확인한 후.my.cnf
, 저는 이 네 가지 상황에서 루트의 비밀번호를 적절하게 설정할 수 있었습니다.다음 이후에는 실행되지 않습니다..my.cnf
업데이트해야 하므로 idempotency test에 실패합니다.
ansible mysql_user module 페이지에 비밀번호를 작성한 후 작성할 것을 제안하는 노트가 있습니다..my.cnf
파일. 만약 그렇게 한다면, 당신은 그가 필요합니다.where
에 대한 조항mysql_user
action (이전의 file stat로 probably).
사용하는 것이 더욱 우아합니다.check_implicit_admin
와 함께login_user
그리고.login_password
. 그것은 아주 무능력한 것입니다.
제3의 방법으로, 아마도check_implicit_admin
더 쉽게 만들 수 있습니다.
여기 몇 개의 새로운 서버로 테스트한 위의 내용을 보여주는 성공적인 플레이북이 있습니다.자랑스럽긴 하네요.메모.my.cnf
이 모든 것에 불필요한 것입니다.
---
- hosts: mysql
vars:
mysql_root_password: fart
tasks:
- name: Install MySQL
apt: name={{ item }} update_cache=yes cache_valid_time=3600 state=present
sudo: yes
with_items:
- python-mysqldb
- mysql-server
#- name: copy cnf
# copy: src=.my.cnf dest=~/.my.cnf owner=ubuntu mode=0644
# sudo: yes
- name: Start the MySQL service
sudo: yes
service:
name: mysql
state: started
enabled: true
- name: update mysql root password for all root accounts
sudo: yes
mysql_user:
name: root
host: "{{ item }}"
password: "{{ mysql_root_password }}"
login_user: root
login_password: "{{ mysql_root_password }}"
check_implicit_admin: yes
priv: "*.*:ALL,GRANT"
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
(편집 - my.cnf 제거)
도움이 될만한 MySQL 역할이 여기 있습니다.
vars/main.yml:
mysql_root_pass: mypassword #MySQL Root Password
asks/main.yml:
---
- name: Install the MySQL packages
apt: name={{ item }} state=installed update_cache=yes
with_items:
- mysql-server-5.6
- mysql-client-5.6
- python-mysqldb
- libmysqlclient-dev
- name: Update MySQL root password for all root accounts
mysql_user: name=root host={{ item }} password={{ mysql_root_pass }} state=present
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
- name: Copy the root credentials as .my.cnf file
template: src=root.cnf.j2 dest=~/.my.cnf mode=0600
- name: Ensure Anonymous user(s) are not in the database
mysql_user: name='' host={{ item }} state=absent
with_items:
- localhost
- "{{ ansible_hostname }}"
- name: Remove the test database
mysql_db: name=test state=absent
notify:
- Restart MySQL
템플릿/root.cnf.j2
[client]
user=root
password={{ mysql_root_pass }}
핸들러/메인.yml
---
- name: Restart MySQL
service: name=mysql state=restarted
site.yml
---
- hosts: all
become: yes
gather_facts: yes
roles:
- mysql
도움이 필요하시면 이 github 링크를 확인해주시기 바랍니다.감사해요.
ubuntu 20.04에서는 login_unix_socket이 필요합니다.
- name: setting default root password
mysql_user:
name: root
password: "{{ mysql_root_password }}"
check_implicit_admin: true
login_unix_socket: /var/run/mysqld/mysqld.sock
건배.
언급URL : https://stackoverflow.com/questions/26597926/install-mysql-with-ansible-on-ubuntu
'source' 카테고리의 다른 글
각 HTML 페이지(예: 각 ng-class)에서 Typescript 열거형을 사용하는 올바른 방법 (0) | 2023.11.07 |
---|---|
Oracle sqdeveloper - 명령줄에서 DB를 연결하는 방법 (0) | 2023.11.07 |
Angularjs로 해시 후 URL 매개 변수를 구문 분석하려면 어떻게 해야 합니까? (0) | 2023.11.07 |
Python에서 문자열이 비어 있지 않은 경우 여러 개의 문자열에 가입 (0) | 2023.11.07 |
플라스크/Ajax HTTP 연결을 유지하는 방법? (0) | 2023.11.07 |