|
|
|
| Вот стоит на сервере Бд mysql, только стоит не нормльно а глючно.
Была БД с именем tim2, однажды пошла команда на установку Mysql и mysql начал записываться по верх старой версии.
При установке создалась новая папка mysql, а старой было присвоено имя типа mysql2.
Я недолго думая заменил имя старой папки на Mysql а новой папки на Mysql2.
Таким образом я востановил все свои данные.
И все было нормльно пока я не попробовал создать новую БД и добавить пользователй в таблицу mysql->user.
Добавил туда нового пользователя с правами через команду insert ну и пароль записывал через PASSWORD.
Но почему то никак не удавалось подключиться по этому пользователю средствами php, по старым все продолжало работать. Ну да ладно подумал я , накосячил где то.
Создал новую БД с именем tim3.
Подключился к mysql по старым пользователям и тут выеснил что php команды выбора БД mysql не работают с новой базой tim3.
$dbSelected = mysql_select_db('tim3', $dbcnx); где $dbcnx подключение которое выполнялось.
И база tim3 точно существовала!
Предположил что это какойто глюк в системе связанный с записью mysql по верх старой и просто заменение новых папок на старые.
Если кто понял о чем я уже очень хорошо, может кто знает в чем причина таких проблем? | |
|
|
|
|
|
|
|
для: tim313
(30.03.2010 в 01:57)
| | 1. В первую очередь выложите my.ini, который сейчас использует сервер - что там?
2. У вас таблицы MyISAM
3. Это Windows или UNIX?
4. Какие версии новой и старой базы данных? | |
|
|
|
|
 2.4 Кб |
|
|
для: cheops
(30.03.2010 в 02:02)
| | 1 - Ini вроде для Windows нашел только cnf, прикрепил
2 Таблицы MyISAM
3 Unix , FreeBSD
4 Версии незнаю наверно одинаковые, все было на 1м сервере.
Версия новой Версия MySQL-клиента: 5.0.67, версия старой не знаю, наверно такая же.
В phpmyadmin все нормально работает и переключаеться.
А через php только tim2 и старые пользователи. | |
|
|
|
|
|
|
|
для: tim313
(30.03.2010 в 02:14)
| | 1. Таблицы в обоих папках (старом и новом каталоге данных) каким пользователям и группам принадлежат и какие на них права доступа?
2. А вы путь к каталогу данных где прописываете? Через параметр сервера передаете его? | |
|
|
|
|
|
|
|
для: cheops
(30.03.2010 в 04:23)
| | 1 - Права на все папки и таблицы одинаковые, на папки 700 на таблицы 660. Старые и новые одно и то же.
И Владелец и Группа на старых и новых тоже одинаковые(владелец и групп mysql)
2 - Не понимаю путь до базы? До базы tim3?
Выбор БД вот так $dbSelected = mysql_select_db('tim3', $dbcnx);
или до папки с БД по умолчанию?
путь до папки по умолчанию я не знаю где найти, он просто стандартно в var/db/mysql/ находиться. | |
|
|
|
|
|
|
|
для: tim313
(30.03.2010 в 12:11)
| | >или до папки с БД по умолчанию?
Да
>путь до папки по умолчанию я не знаю где найти, он просто стандартно в var/db/mysql/
>находиться.
Вы говорили что у вас две их, вы не меняли путь, просто заменяли файлы в var/db/mysql/ ? | |
|
|
|
|
|
|
|
для: cheops
(30.03.2010 в 12:57)
| | Нет у меня две базы всмысле две базы(tim2 и tim3) в одной базе Mysql.
Пусть я конечно не менял, я даже не знаю где он прописан.
Просто заменил файлы в var/db/mysql/ на старые.
В Таблице Mysql->User у пользователя через которого я подключаюсь по php все права находяться в состоянии "N". Тоесть нету прав.
Но через этого юзера я нормально могу вставлять удалять смотреть таблицы через php.
Еще есть пользователи unknown-xxx.agava.net и 127.0.0.1 у которых вообще нет пароля.
Такое ощущение что гдето храняться данные о юзерах которые используються сервером, и сервер считает юзера со всеми правами N юзером сервера и дает возможность делать все что доступно юзерам unknown-xxx.agava.net или 127.0.0.1.
Если это так то может быть есть записи и о БД которые доступны юзерам, и там находиться запись только об одной бд tim2, а на новую tim3 записи нету.
Попробовал зайти через php юзером root со всеми правами, все работает.
У меня стоит ISP Maneger панель, помню как в ней создавал юзеров с разными правами, а в таблице у всех этих узеров права N.
Значит только где то храниться информация о том у кого какие права у юзеров. | |
|
|
|
|
|
|
|
для: tim313
(30.03.2010 в 14:01)
| | N ещё ничего не значит - это глобальные права (вас я так понимаю интересую права на базы данных?) запрос
SHOW GRANTS FOR 'root'@'localhost';
|
Подставляя вместо root имя пользователя, а в место localhost сетевой суффикс - как выглядят результаты?
>Если это так то может быть есть записи и о БД которые доступны юзерам, и там находиться
>запись только об одной бд tim2, а на новую tim3 записи нету.
Скорее всего
>Попробовал зайти через php юзером root со всеми правами, все работает.
>У меня стоит ISP Maneger панель, помню как в ней создавал юзеров с разными правами, а в
>таблице у всех этих узеров права N.
>Значит только где то храниться информация о том у кого какие права у юзеров.
Там вероятно имеется phpMyAdmin? Зайдите в него в раздел привелегии - там можно выставить права доступа и просматривать их гораздо удобнее. | |
|
|
|
|
|
|
|
для: cheops
(30.03.2010 в 15:04)
| | И так,
Создав нового пользователя и выставив ему все права при запросе
SHOW GRANTS FOR 'root'@'localhost'; где root-его имя, mysql ругаеться и выдает:
#1141 - There is no such grant defined for user 'foto_1' on host 'localhost' хотя он есть в таблице со всеми правами.
И даже а разделе привелегиии он там есть:
Пользователь Хост Тип Привилегии GRANT Действие
foto_1 localhost Глобальный уровень ALL PRIVILEGES Да
| '
Через php по этому пользователю со всеми правами тоже не зайти и в phpmyadmin по нему не зайти пишит ошибку, но указывает что пароль введен верно)
При таком же запросе на старых пользователей действиетльно нашел то, что и ожидал.
Вывод типа:
GRANT USAGE ON *.* TO 'tim313'@'localhost' IDENTIFIED BY PASSWORD '*тут пароль'
GRANT SELECT, INSERT, UPDATE, DELETE ON `db\_tim313\_1`.* TO 'tim313'@'localhost'
|
Вот она в чем собака.
Остаються 2 вопроса, как добавлять юзеров что бы их принимал mysql и как им ставить права подобные GRANT SELECT, INSERT, UPDATE, DELETE ON `db\_tim313\_1`.* TO 'tim313'@'localhost'.
Понял как создавать привелегии только почему то они не создаються на нового пользователя, на старых работает а на новом ругаеться:
SQL-запрос:
GRANT SELECT , INSERT , UPDATE , DELETE ON `tim3` . * TO 'foto_1'@'localhost';
Ответ MySQL:
#1133 - Can't find any matching row in the user table
|
Ура все получилось, нажал изменить имя пользователя, он автоматически создал нового с теми же данными и для него уже вышло поменять привелегии.
Спасибо большое) | |
|
|
|
|
|
|
|
для: tim313
(30.03.2010 в 15:20)
| | Вот так попробуйте
SHOW GRANTS FOR 'foto\_1'@'localhost';
|
| |
|
|
|
|
|
|
|
для: tim313
(30.03.2010 в 15:20)
| | Вообще использовать подчеркивания в именах пользователей - плохая идея, лучше вообще без них, если у вас подчеркивания имеются нужно очень внимательно составлять запросы и экранировать их. Причем это только в именах пользователей, в базах данных уже не надо и это нужно постоянно помнить - собственно поэтому идея и плохая, нет единообразия обработки символа - в одном месте так, в другом эдак. | |
|
|
|