SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.05.2009 19:18:29

pixel
Завсегдатай
Зарегистрирован: 16.04.2009
Сообщений: 39

как мне работать с БД?

Добрый день.
Пишу скрипт, в котором создаю БД, создаю таблицы, в числе которых есть таблица users, заношу первичные данные в таблицы, в том числе и в users (ФИО, должность и т.п.) после чего делаю GRANT для тех юзеров, что внес на select, update, insert, delete на dbname.*. На стартовой странице висит приглашение на ввод логина/пароля. затем запускается php в котором идет подключение к БД под введенными логином/паролем но почему то если я использую GRANT у этих юзеров пропадают вообще какие либо права. т.е. к БД я под ними подключиться не могу. почему то в mysql\users мои юзера прописываются, но в столбцах с правами везде проставляется N. Подскажите, как нужно мне грантить юзеров, что бы без проблем можно было работать с БД? а то начал писать, а такой затык все желание отбивает.
И еще, подскажите, как мне организовать подключение к БД? т.е. юзер вводит логин/пароль, подключается к БД и дальше может пользоваться select/insert/update  без постоянного повторения подключения к БД или все таки требуется постоянное повторение операции подключения к БД? (Сорри за запутанность)

Неактивен

 

#2 14.05.2009 20:24:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: как мне работать с БД?

1. Какой командой Вы добавляете права? Скорее всего, проставляете пароль как-то не так.
2 .Если даете права на базу, то и ищите их в таблице с базой, N в глобальных правах —
нормальное положение вещей.
3. По поводу поддержания соединений — смотрите на тему mysql_pconnect.

Неактивен

 

#3 14.05.2009 20:53:37

pixel
Завсегдатай
Зарегистрирован: 16.04.2009
Сообщений: 39

Re: как мне работать с БД?

paulus написал:

1. Какой командой Вы добавляете права? Скорее всего, проставляете пароль как-то не так.

grant select, insert, update, delete on dbname.* to username identified by 'passcode'

paulus написал:

2 .Если даете права на базу, то и ищите их в таблице с базой, N в глобальных правах —
нормальное положение вещей.

Тем не менее, после такого гранта меня в БД не пускает.

paulus написал:

3. По поводу поддержания соединений — смотрите на тему mysql_pconnect.

Это все понятно, вот только не понятно как использовать идентификатор уже открытого соединения если используется куча страничек? например, открываю соединение на главной странице, а затем перехожу на другую не будет ли теряться соединение?

Неактивен

 

#4 15.05.2009 12:58:42

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: как мне работать с БД?

grant select, insert, update, delete on dbname.* to username identified by 'passcode'

вот эта команда плохая, скорее всего, Вы не проверяете ошибки. в синтаксисе
username@hostname. Иначе подставляется localhost, а соединение, скорее всего,
приходит не с него. Угадал?

--

К страничкам pconnect не имеет никакого отношения. Влияет только наличие уже
открытого соединения под тем же пользователем.

Неактивен

 

#5 15.05.2009 19:11:54

pixel
Завсегдатай
Зарегистрирован: 16.04.2009
Сообщений: 39

Re: как мне работать с БД?

paulus написал:

grant select, insert, update, delete on dbname.* to username identified by 'passcode'

вот эта команда плохая, скорее всего, Вы не проверяете ошибки. в синтаксисе
username@hostname. Иначе подставляется localhost, а соединение, скорее всего,
приходит не с него. Угадал?

Не угадали. Я пишу на своем компе, соответственно и проверяю на нем же, так что localhost тут не играет главной роли
Позднее:
с GRANTом вроде разобрался - доступ получил. Но все равно не понятно, если давать привилегии юзеру, то они оседают не в той таблице, которая создана, а в БД mysql.user и т.п. Тем более пароль шифруется средствами password(). А что если это форум, и юзеров там 10 000? таблица же раздуется. и опять же не понятен вопрос с доступом с php-страниц. Если пытаюсь получить доступ с web - то не могу использовать password() т.к. это для SQL-выражений. Как же мне юзеров то прописывать? Есть конечно вариант, прописать одного юзера и жестко забить логин и пароль в странице, но ведь это же не выход, да и количество одновременных соединений, да еще и под одним и тем же логином/паролем будут расти. Как же люди регистрят юзеров?

Отредактированно pixel (15.05.2009 20:41:01)

Неактивен

 

#6 16.05.2009 19:15:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: как мне работать с БД?

Вы путаете пользователей БД и пользователей сервиса. К БД обычно подсоединяются по небольшим
(часто — 1) количеством пользователей.

Неактивен

 

#7 17.05.2009 16:35:04

pixel
Завсегдатай
Зарегистрирован: 16.04.2009
Сообщений: 39

Re: как мне работать с БД?

ясно, спасибо. Теперь возникла другая проблема, что то не могу понять, данные есть а в выборке их нет:
1. Скриптом заносятся данные пользователей:
insert into users values (NULL, 0, "Админов", "Админ","Админыч","admin",password(999999),5,1,0);
естественно что под password(999999) - понимается зашифрованный пароль.
В таблице users моей БД появляется пользователь - все вроде бы нормально, но когда я из php-страницы посылаю:
$query="select ID_USER, FirstName, MiddleName, Sex_Id from users where Login='$Log1' and Pass=Password('$Pass1')";
возвращается что пользователь не найден. разве я не правильно использую Password()?

Неактивен

 

#8 18.05.2009 11:51:01

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: как мне работать с БД?

А Вы выведите строчку на экран перед тем, как посылать. Скорее всего, какая-то
из переменных окажется пустой.

Неактивен

 

#9 18.05.2009 17:19:51

pixel
Завсегдатай
Зарегистрирован: 16.04.2009
Сообщений: 39

Re: как мне работать с БД?

все переменные заполнены правильно, я даже в самом mysql запускал эту строку со значениями - возвращает 0

Неактивен

 

#10 19.05.2009 03:00:52

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: как мне работать с БД?

«я вам не верю» ©

Код:

[celestia] root test > create table users (login varchar(20), password varchar(41));
Query OK, 0 rows affected (0.14 sec)

[celestia] root test > insert users values ('admin', password('root'));
Query OK, 1 row affected (0.00 sec)

[celestia] root test > select * from users where login='admin' and password=password('root');
+-------+-------------------------------------------+
| login | password                                  |
+-------+-------------------------------------------+
| admin | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 
+-------+-------------------------------------------+
1 row in set (0.00 sec)

Возможно, у Вас проблемы со структурой таблицы (например, поле пароля короткое, а
на предупреждения, что строка обрезана, Вы не смотрите).

Неактивен

 

#11 19.05.2009 18:12:22

pixel
Завсегдатай
Зарегистрирован: 16.04.2009
Сообщений: 39

Re: как мне работать с БД?

странно, у меня под поле пароля было выделено 15 символов - не работало, сделал 50 - заработало. НО, в итоге то пароли одинаковые! все равно спасибо за помощь.

Неактивен

 

#12 19.05.2009 21:48:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: как мне работать с БД?

Для того, чтобы хранить строку длиной 41 байт, 15 байт мало, а 50 — много. 41 — в самый раз wink

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson