select * from mysql.user where User = 'someuser';
| dsbl_localhost | someuser | *q1wqeqweqwe | 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 |
То есть, вместо localhost клиенту прописывается Host dsbl_localhost, чтобы он ну никак не мог получить доступ, что же, годный метод. Поиск по интернетам также результатов не дал, видимо, "красивых" решений этой проблемы не существует. Вот даже фич риквест в баг-трекере MySQL: http://bugs.mysql.com/bug.php?id=9736
"видимо, "красивых" решений этой проблемы не существует"
ReplyDeleteПаш, мало того существуют, так они еще и встроены в MySQL. Называется команда Revoke.
Перефразирую, чтобы стало очевидно: чтобы у человека не было прав на доступ к базе, надо не базу прятать, а права отозвать. То есть revoke. Причем отзывать не только права на чтение, но и на самовыдачу грантов.
Ну а тогда где, по твоему, исп на время отключения юзера будет хранить то, к каким таблицам у него был доступ? То то же.
ReplyDeleteОтозвать только селект и грант_привиледж. Они всегда стоят на Y. И без селекта никуда.
ReplyDeleteКстати нашел еще более прикольный способ:
# mysql -p -e "desc mysql.user;" | grep connections
Enter password:
max_connections int(11) unsigned NO 0
max_user_connections int(11) unsigned NO 0
Можно коннектиться запретить :D
Не получится - The maximum number of simultaneous connections permitted to any given MySQL user account. A value of 0 (the default) means “no limit.” :)
ReplyDelete