Ansible: Modul MySQL gagal menambahkan hak istimewa kepada pengguna; melempar kesalahan.

Dibuat pada 29 Sep 2013  ·  3Komentar  ·  Sumber: ansible/ansible

Versi:

  • Kemungkinan: 1.3.2
  • Piton: 2,7
  • OS: Debian 7 (host yang memungkinkan), Centos6.4 (klien), Debian Unstable (klien)
  • MySQL: mysql-5.5.30, amariadb-5.5.33a-MariaDB

Metode penginstalan:

Saya menginstal Ansible dengan cara berikut:

 TARGET="/tmp/mungkin01"
 sudo apt-get install python-setuptools
 sudo easy_install virtualenv
 cd $TARGET && virtualenv memungkinkan
 sumber $TARGET/ansible/bin/activate
 pemasangan pip dimungkinkan an

Deskripsi:

Menggunakan buku pedoman ini (salin/tempel dari dokumentasi) kueri mysql pada klien dapat benar-benar membuat pengguna. Tapi itu gagal untuk menerapkan hak istimewa.

 - nama: Mengatur Kata Sandi Pengguna Galera
 mysql_user: login_user={{ mysql_user }} login_password={{ mysql_password }} name={{ galera_user }} password={{ galera_password }} state=present priv=*.*:ALL

Kesalahan dilemparkan:

REMOTE_MODULE mysql_user login_user=root login_password=nama penasaran=elvis password=spring state=present priv=*.*:ALL
 fatal: [c6-4] => gagal menguraikan: Traceback (panggilan terakhir terakhir):
 File "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", baris 1348, di
 utama()
 File "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", baris 405, di main
 diubah = user_mod(kursor, pengguna, host, kata sandi, priv)
 File "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", baris 188, di user_mod
 privileges_revoke (kursor, pengguna, host, db_table, grant_option)
 File "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", baris 263, di privileges_revoke
 kursor.jalankan(permintaan)
 File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", baris 173, di eksekusi
 self.errorhandler(self, exc, nilai)
 File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", baris 36, di defaulterrorhandler
 naikkan kelas kesalahan, nilai kesalahan
 _mysql_exceptions.OperationalError: (1045, "Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi: YA)")


 FATAL: semua host telah gagal -- batal

Perhatikan bahwa pengguna benar-benar dibuat:

 [root@c6-4 ~]# mysql mysql -e "pilih Host,User from user;" | grep elvis
 | localhost | elvis |
bug mysql

Semua 3 komentar

Ini sepertinya pertanyaan otentikasi modul MySQL (mungkin perlu untuk mengatur my.cnf, dll), silakan mampir ke milis jika Anda ingin bantuan.

Hal yang dipelajari: Jangan menyalin/menempel dari dokumen tanpa berpikir.
Untuk generasi mendatang:

Saya menggunakan tugas ini untuk mengubah kata sandi 'root' pengguna mysql:

 - nama- nama: Mengatur Kata Sandi Root MySQL
 mysql_user: name=root password={{ mysql_password}} priv=*.*:ALL state=present

Tampaknya ini merusak izin GRANT dari 'root', sehingga gagal memberikan privs berikutnya kepada pengguna yang baru dibuat....

Persetan, saya juga mengalami hal yang sama. docs harus diubah di sini ASAP.
Sekarang saya harus memperbaiki banyak sistem secara manual :(

Butuh waktu lama bagi saya untuk mencari tahu mengapa beberapa panggilan pada pengguna yang ada atau menghapus pengguna berfungsi dengan baik tetapi membuat yang baru tidak mungkin dengan kredensial yang sama dan benar....
ini harus dibuka kembali sampai dokumen diperbaiki dan harus ada mekanisme pencegahan di modul mysql_user atau setidaknya peringatan !!!

ini berpotensi merusak banyak sistem dan menemukan atau memperbaikinya tidak praktis.

Jika seseorang benar-benar ingin menghapus hibah melalui priv=*.*:ALL harus ada opsi lain untuk memaksa ini bahkan untuk pengguna root (dengan peringatan besar di dokumen bahwa ini mungkin membuat Anda tidak memiliki pengguna dengan hak Hibah) atau itu harus gagal jika tidak menemukan pengguna dengan hak istimewa yang tersisa ...

Perbaikan manual adalah me-restart mysql dengan opsi:
--skip-grant-tables

Dan Jalankan perintah berikut dalam perintah mysql (CATATAN: GRANT ... ALL ..tidak berfungsi karena tabel hibah itu dilewati duh):

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
Apakah halaman ini membantu?
0 / 5 - 0 peringkat