sql >> Database teknologi >  >> RDS >> Mysql

Installer MySQL med ansible på ubuntu

Når mysql-server er installeret hovedløst, er der ingen adgangskode. Derfor skal du lave .my.cnf fungerer, skal den have en tom kodeordslinje. Her er hvad jeg testede med for en .my.cnf :

[client]
user=root
password=

Det er også lidt mærkeligt at sætte .my.cnf i din vagrant brugermappe som ejet af root og kun læsbar som root.

Efter at have sikret, at adgangskoden var tom i .my.cnf , var jeg i stand til at indstille adgangskoden til root korrekt i disse fire sammenhænge. Bemærk, at den ikke kører efter det, da .my.cnf skal opdateres, så den ikke består idempotenstesten.

Der er en note på den mulige mysql_user-modulside, der foreslår at skrive adgangskoden og derefter at skrive .my.cnf fil. Hvis du gør det, skal du bruge en where klausul til mysql_user handling (sandsynligvis med en filstatistik før det).

Endnu mere elegant er det at bruge check_implicit_admin sammen med login_user og login_password . Det er smukt idempotent.

Som en tredje måde, måske check_implicit_admin gør det endnu nemmere.

Her er min succesfulde spillebog, der viser ovenstående, testet med et par friske servere. Lidt stolt af dette. Bemærk .my.cnf er unødvendig for alt dette.

---
- 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 

(rediger- fjernet min.cnf)



  1. MariaDB NULLIF() Forklaret

  2. Sådan indsætter du et linjeskift i en SQL Server VARCHAR/NVARCHAR streng

  3. Sådan returneres en liste over understøttede områder i Oracle

  4. MySQL:Hvorfor bruge VARCHAR(20) i stedet for VARCHAR(255)?