Тема: DirectAdmin с возможностью доступа к MySQL с люого IP
Сделал небольшой скриптец который решает проблему с создаваемыми правами на базы и пользователей, которые по умолчанию имеют возможность подсоединятся только с localhost. А мне надо чтобы работал один phpmyadmin для всех серверов. Вешаем MySQL на внешний IP, с IPTABLES ограничиваем доступ с нужных IP и цепляем скрипт который дополнительно правит создаваемых пользователей и базы.
/usr/local/directadmin/scripts/custom/database_create_post.sh
#!/bin/sh
# Alan Vezhbitskis
# www.alan.lt
# fix problem with global phpmyadmin for all hosting servers
# auto create host=% for new user's
#tmp=/tmp/mysql_user_create.tmp
tmp=/dev/null
mysql_pass=`/bin/cat /usr/local/directadmin/conf/mysql.conf | /bin/grep passwd | /bin/awk -F "=" '{print $2}'`
mysql_ver=`/usr/bin/mysql -uda_admin -p${mysql_pass} --skip-column-names -se "show variables like \"version\"" | /bin/awk '{print $2}' | /bin/awk -F "." '{print $1"."$2}'`
date >> ${tmp}
id >> ${tmp}
env >> ${tmp}
echo "DAuser: ${username}" >> ${tmp}
echo "base: ${database}" >> ${tmp}
database2=`echo "${database}" | /bin/sed -e 's/_/\\\_/'`
echo "base2: ${database2}" >> ${tmp}
echo "user: ${user}" >> ${tmp}
echo "pass: ${passwd}" >> ${tmp}
if [ "${mysql_ver}" != "5.5" ]; then
echo "Error: Tested only with MySQL 5.5, sorry ;)" >> ${tmp}
exit;
fi
if [ "${user}" = "root" -o "${user}" = "mysql" -o "${user}" = "" ]; then
echo "Error: user can not be a root, mysql or blank" >> ${tmp}
else
echo "User OK" >> ${tmp}
/usr/bin/mysql --skip-column-names -uda_admin -p${mysql_pass} -se "INSERT INTO user VALUES ('%','${user}',password('${passwd}'),'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','','0','0','0','0','','NULL');" mysql >> ${tmp}
/usr/bin/mysql --skip-column-names -uda_admin -p${mysql_pass} -se "INSERT INTO db VALUES ('%','${database2}','${username}','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');" mysql >> ${tmp}
/usr/bin/mysql --skip-column-names -uda_admin -p${mysql_pass} -se "INSERT INTO db VALUES ('%','${database2}','${user}','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');" mysql >> ${tmp}
/usr/bin/mysql --skip-column-names -uda_admin -p${mysql_pass} -se "FLUSH PRIVILEGES;" mysql >> ${tmp}
fi