๋ฒ์ :
์ค์น ๋ฐฉ๋ฒ :
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก Ansible์ ์ค์นํ์ต๋๋ค.
TARGET = "/ tmp / ansible01" sudo apt-get install python-setuptools sudo easy_install virtualenv cd $ TARGET && virtualenv ansible ์์ค $ TARGET / ansible / bin / activate pip ์ค์น ansible
๊ธฐ์ :
์ด ํ๋ ์ด ๋ถ (๋ฌธ์์์ ๋ณต์ฌ / ๋ถ์ฌ ๋ฃ๊ธฐ)์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ์ mysql ์ฟผ๋ฆฌ๊ฐ ์ค์ ๋ก ์ฌ์ฉ์๋ฅผ ์์ฑ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ถํ์ ์ ์ฉํ์ง ๋ชปํฉ๋๋ค.
-์ด๋ฆ : Galera ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ ์ค์ mysql_user : login_user = {{mysql_user}} login_password = {{mysql_password}} name = {{galera_user}} password = {{galera_password}} state = present priv = *. * : ALL
๋ฐ์ํ ์ค๋ฅ :
REMOTE_MODULE mysql_user login_user = root login_password = ํธ๊ธฐ์ฌ ๋ง์ ์ด๋ฆ = elvis password = spring state = present priv = *. * : ALL ์น๋ช ์ : [c6-4] => ํ์ฑ ์คํจ : Traceback (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง) : ํ์ผ "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", ์ค 1348, ๋ณธ๊ด() ํ์ผ "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", ์ค 405, ์ฃผ ๋ณ๊ฒฝ๋จ = user_mod (์ปค์, ์ฌ์ฉ์, ํธ์คํธ, ์ํธ, priv) user_mod์ ํ์ผ "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", 188 ํ privilege_revoke (์ปค์, ์ฌ์ฉ์, ํธ์คํธ, db_table, grant_option) privilege_revoke์์๋ ํ์ผ "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", 263 ํ cursor.execute (์ฟผ๋ฆฌ) ํ์ผ "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", 173 ํ, ์คํ ์ค self.errorhandler (self, exc, value) ํ์ผ "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", 36 ํ, defaulterrorhandler errorclass, errorvalue ๋ฐ์ _mysql_exceptions.OperationalError : (1045, " 'root'@ 'localhost'์ฌ์ฉ์์ ๋ํ ์ก์ธ์ค๊ฐ ๊ฑฐ๋ถ๋์์ต๋๋ค (์ํธ ์ฌ์ฉ : YES)") ์น๋ช ์ : ๋ชจ๋ ํธ์คํธ๊ฐ ์ด๋ฏธ ์คํจํ์ต๋๋ค. ์ค๋จ ์ค
์ฌ์ฉ์๋ ์ค์ ๋ก ์์ฑ๋ฉ๋๋ค.
[root @ c6-4 ~] # mysql mysql -e "Select Host, User from user;" | ๊ทธ๋ ์๋น์ค | localhost | ์๋น์ค |
์ด๊ฒ์ MySQL ๋ชจ๋ ์ธ์ฆ ์ง๋ฌธ ์ธ ๊ฒ ๊ฐ์ต๋๋ค (์๋ง๋ my.cnf๋ฅผ ์ค์ ํด์ผ ํ ํ์๊ฐ ์์). ๋์์ด ํ์ํ๋ฉด ๋ฉ์ผ ๋ง๋ฆฌ์คํธ์ ๋ค๋ฅด์ญ์์ค.
๊ตํ : ์๊ฐ์์ด ๋ฌธ์์์ ๋ณต์ฌ / ๋ถ์ฌ ๋ฃ๊ธฐํ์ง ๋ง์ญ์์ค.
๋ฏธ๋ ์ธ๋๋ฅผ ์ํด :
์ด ์์ ์ ์ฌ์ฉํ์ฌ mysql ์ฌ์ฉ์ 'root'์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค.
-์ด๋ฆ-์ด๋ฆ : MySQL ๋ฃจํธ ๋น๋ฐ๋ฒํธ ์ค์ mysql_user : name = root password = {{mysql_password}} priv = *. * : ALL state = present
์ด๊ฒ์ '๋ฃจํธ'์ GRANT ๊ถํ์ ๋ฐฉํดํ์ฌ ์๋ก ์์ฑ ๋ ์ฌ์ฉ์์๊ฒ priv๋ฅผ ๋ถ์ฌํ๋ ๋ค์ ๋นํธ์ ์คํจํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค ....
์ ์ฅ, ๋์๊ฒ๋ ๊ฐ์ ์ผ์ด ์ผ์ด๋ฌ๋ค. ๋ฌธ์๋ ์ต๋ํ ๋นจ๋ฆฌ ์ฌ๊ธฐ์์ ๋ณ๊ฒฝํด์ผํฉ๋๋ค.
์ด์ ๋ง์ ์์คํ
์ ์๋์ผ๋ก ์์ ํด์ผํฉ๋๋ค.
๊ธฐ์กด ์ฌ์ฉ์์ ๋ํ ์ผ๋ถ ํธ์ถ ๋๋ ์ฌ์ฉ์ ์ ๊ฑฐ๊ฐ ์ ์๋ํ๋ ์ด์ ๋ฅผ ํ์
ํ๋ ๋ฐ ์์ํ ๊ฑธ๋ ธ์ง ๋ง ๋์ผํ ์ฌ๋ฐ๋ฅธ ์๊ฒฉ ์ฆ๋ช
์ผ๋ก๋ ์ ํธ์ถ์ ์์ฑ ํ ์ ์์ต๋๋ค ....
๋ฌธ์๊ฐ ์์ ๋ ๋๊น์ง ๋ค์ ์ด์ด์ผํ๋ฉฐ mysql_user ๋ชจ๋์ ๋ฐฉ์ง ๋ฉ์ปค๋์ฆ์ด ์๊ฑฐ๋ ์ต์ํ ๊ฒฝ๊ณ ๊ฐ ์์ด์ผํฉ๋๋ค !!!
์ด๊ฒ์ ์๋์ ์ผ๋ก ๋ง์ ์์คํ ์ ๋ง๊ฐ๋จ๋ฆด ์ ์์ผ๋ฉฐ ๊ทธ๊ฒ์ ์ฐพ๊ฑฐ๋ ๊ณ ์น๋ ๊ฒ์ ๋ฒ๊ฑฐ ๋กญ์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ ๋ง๋ก priv=*.*:ALL
ํตํด ํ๊ฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ฉด ๋ฃจํธ ์ฌ์ฉ์์๊ฒ๋์ด๋ฅผ ๊ฐ์ ํ๋ ๋ค๋ฅธ ์ต์
์ด ์์ด์ผํฉ๋๋ค (๋ฌธ์์ ํ๊ฐ ๊ถํ์ด์๋ ์ฌ์ฉ์๊ฐ ์์ ์ ์๋ค๋ ํฐ ๊ฒฝ๊ณ ์ ํจ๊ป). ๊ถํ ๋ถ์ฌ๊ฐ ๋จ์์๋ ์ฌ์ฉ์๊ฐ ์์ผ๋ฉด ์คํจํฉ๋๋ค.
์๋ ์์ ์ ๋ค์ ์ต์
์ ์ฌ์ฉํ์ฌ mysql์ ๋ค์ ์์ํ๋ ๊ฒ์
๋๋ค.
--skip-grant-tables
๊ทธ๋ฆฌ๊ณ mysql ๋ช ๋ น์์ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค (์ฐธ๊ณ : GRANT ... ALL .. ๊ทธ ๋ถ์ฌ ํ ์ด๋ธ์ ๊ฑด๋ ๋ฐ๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ต๋๋ค).
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;