URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5891
[ Назад ]

Исходное сообщение
"Непонятка с MySQL'ем"

Отправлено the_age , 24-Июл-08 15:07 
Server version: 5.0.37 FreeBSD port: mysql-server-5.0.37

Сабж.

Описываю: пользователь user_name с доступом только к базе вида data_base может создать и базу data?base

В таблицах db и user базы mysql нет ни малейшего намёка на data?base а только data_base В таблице user базы mysql у пользователя username стоит No по всем правам, доступ определяется только в таблице db и только к одной единственной базе. Вот show grants под пользователем:

GRANT USAGE ON *.* TO 'user_name'@'192.168.1.10' IDENTIFIED BY PASSWORD 'qwerty'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `data_base`.* TO 'user_name'@'192.168.1.10'

Причём, такая ерунда по всем логинам\базам с символом подчёркивания.

В какую сторону копать и гуглить?


Содержание

Сообщения в этом обсуждении
"Непонятка с MySQL'ем"
Отправлено Pahanivo , 24-Июл-08 16:09 
А в таблице mysql.user у него нет случайно глобальных привелегий?



"Непонятка с MySQL'ем"
Отправлено the_age , 24-Июл-08 16:25 
>А в таблице mysql.user у него нет случайно глобальных привелегий?

Нет никаких. И он не может создать какие-то другие базы, только такую же как у него есть но с заменой "_" на "?" Есть подозрение, что MySQL позволяет заменять этот символ.

Вот выборка из user по нему:

select * from user where user like 'user_name';
| Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections |

| 192.168.1.10 | user_name | qwerty | 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 |

А вот выборка из db

select * from db where user like 'user_name';
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Create_tmp_table_priv | Lock_tables_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Execute_priv |

| 192.168.1.10 | date_base | user_name | Y | Y | Y | Y | Y | Y | N | N | Y | Y | N          | Y | N | N | N | N | N |

В базе mysql я более нигде не нашёл ни хост 192.168.1.10 ни юзера user_name


"Непонятка с MySQL'ем"
Отправлено angra , 24-Июл-08 16:29 
Ведь было написано что нет. Для проверки создал аналогичное у себя

select * from mysql.user where user='user_name'\G
*************************** 1. row ***************************
                 Host: %
                 User: user_name
             Password:
          Select_priv: N
          Insert_priv: N
          Update_priv: N
          Delete_priv: N
          Create_priv: N
            Drop_priv: N
          Reload_priv: N
        Shutdown_priv: N
         Process_priv: N
            File_priv: N
           Grant_priv: N
      References_priv: N
           Index_priv: N
           Alter_priv: N
         Show_db_priv: N
           Super_priv: N
Create_tmp_table_priv: N
     Lock_tables_priv: N
         Execute_priv: N
      Repl_slave_priv: N
     Repl_client_priv: N
     Create_view_priv: N
       Show_view_priv: N
  Create_routine_priv: N
   Alter_routine_priv: N
     Create_user_priv: N
             ssl_type:
           ssl_cipher:
          x509_issuer:
         x509_subject:
        max_questions: 0
          max_updates: 0
      max_connections: 0
max_user_connections: 0

Проблему подтверждаю в Server version: 5.0.51a-6 (Debian). Надо бы сходить в их багзиллу, но лень.


"Непонятка с MySQL'ем"
Отправлено the_age , 24-Июл-08 17:16 
>Server version: 5.0.37 FreeBSD port: mysql-server-5.0.37
>В какую сторону копать и гуглить?

Всё, всем спасибо, разобрался...

http://dev.mysql.com/doc/refman/5.0/en/grant.html

The “_” and “%” wildcards are allowed when specifying database names in GRANT  statements that grant privileges at the global or database levels. This means, for example, that if you want to use a “_” character as part of a database name, you should specify it as “\_” in the GRANT statement, to prevent the user from being able to access additional databases matching the wildcard pattern; for example, GRANT ... ON `foo\_bar`.* TO ....

То есть в mysql.db база data_base должна быть экранирована т.е. date\_base Также это желательно и с юзером сделать.


"Непонятка с MySQL'ем"
Отправлено angra , 24-Июл-08 23:46 
Интересный момент, никогда не обращал внимания, может потому что ни разу не понадобилось создавать/использовать базу данных с _ в имени.


"Непонятка с MySQL'ем"
Отправлено Pahanivo , 25-Июл-08 07:59 
>Интересный момент, никогда не обращал внимания, может потому что ни разу не
>понадобилось создавать/использовать базу данных с _ в имени.

Я тоже. Видимо потому что я обычно пользую phpMyAdmin, он пади это дело на автомате фиксит.