Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zainstaluj MySQL z ansible na ubuntu

Kiedy mysql-server jest zainstalowany bez nagłówka, nie ma hasła. Dlatego zrobić .my.cnf pracy, powinien mieć pustą linię hasła. Oto, z czym testowałem dla .my.cnf :

[client]
user=root
password=

Trochę dziwne jest również umieszczenie .my.cnf w twoim vagrant katalog użytkownika jako własność roota i możliwy do odczytu tylko jako root.

Po upewnieniu się, że hasło jest puste w .my.cnf , udało mi się poprawnie ustawić hasło dla roota w tych czterech kontekstach. Zauważ, że po tym nie działa, ponieważ .my.cnf musiałby zostać zaktualizowany, więc nie przejdzie testu idempotentności.

Na stronie modułu mysql_user ansible znajduje się uwaga, która sugeruje wpisanie hasła i następnie pisanie .my.cnf plik. Jeśli to zrobisz, potrzebujesz where klauzula mysql_user akcja (prawdopodobnie z wcześniejszą statystyką pliku).

Jeszcze bardziej eleganckie jest użycie check_implicit_admin wraz z login_user i login_password . To pięknie idempotentne.

Jako trzeci sposób, być może check_implicit_admin sprawia, że ​​jest to jeszcze łatwiejsze.

Oto mój udany podręcznik pokazujący powyższe, przetestowany na kilku nowych serwerach. Trochę z tego dumny. Uwaga .my.cnf jest niepotrzebne do tego wszystkiego.

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

(edytuj - usunięto my.cnf)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć dwie tabele w zestawieniu UPDATE?

  2. MYSQL UPUŚĆ WIDOK

  3. Ten wynik jest zbiorem wyników tylko do przodu, wywołanie funkcji rewind() po przejściu do przodu nie jest obsługiwane - Zend

  4. FORCE INDEX w MySQL - gdzie go umieścić?

  5. Instrukcja SQL do zapisania tabeli?