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

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

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

Вы не зашли.

#1 03.03.2009 23:30:34

proot
Участник
Откуда: Москва
Зарегистрирован: 03.03.2009
Сообщений: 21

Требуется помощь специалиста.

Всё скомпилированно, исходников нет!!!
Есть серверная часть на MySQL.  В ней "по начальному шаблону" удалённый пользователь (клиент)создаёт свои базы. Удалённая клиентская часть конектется  по IP. и порту 3306.  Список баз данных "приходит" с серверной части далее вводится логин и пароль в выбранную базу. Надо сделать так, что бы удалённые клиенты видели только свои базы. MySQL позволяет поднимать его на одном сервере много раз. На сервере в файле ini, порт 3306 - это параметр, но в клиенте он, видимо, "прошит". Опастность в том, что клиент обладающий правами Админа (в базе) может создавать новые пустые базы из шаблона с именами соседних существующих баз, ЗАТИРАЯ их! Вот эту проблему и надо ликвидировать!
Я не программист, я заказчик. Сколько вешать в граммах??

Неактивен

 

#2 04.03.2009 13:17:33

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

Re: Требуется помощь специалиста.

Достаточно «серверной части» не давать администраторские права (давать права на создание
только конкретной базы):

GRANT ALL ON dbname.* TO username@hostname IDENTIFIED BY 'password' — тогда он не сможет
создать соседней базы => не сможет ее испортить.

Неактивен

 

#3 04.03.2009 20:46:55

proot
Участник
Откуда: Москва
Зарегистрирован: 03.03.2009
Сообщений: 21

Re: Требуется помощь специалиста.

Sir paulus!

А куда это прописывать?
есть my.ini
--------------------------------
# my.cnf
# Конфигурационный файл СУБД MySQL.
#
# Внимание! При установке на диск отличный от с:
# замените все встречающиеся в тексте ссылки с:
# на имя выбранного диска (например dsmile.

[client]
user=admin
password=
port=3306
character-sets-dir=c:/opus/server/share/charsets

[mysqld]
port=3306
skip-locking
skip-innodb
default-character-set=cp1251
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M
set-variable = thread_stack=128K
set-variable = flush_time=1800
basedir = c:/opus/server/
datadir = c:/opus/server/data/
#log
#log-update

--------------------------------

А есть start.bat
он вот такой:

@echo off
rem Сценарий запуска СУБД MySQL
rem
rem Внимание! При установке на диск отличный от с:
rem замените все встречающиеся в тексте ссылки с:
rem на имя выбранного диска (например dsmile.

echo MySQL Server is starting on %COMPUTERNAME%.
echo Hint: To stop DB server, please, run stop.bat
c:\opus\server\bin\mysqld --defaults-file=c:\opus\server\my.ini

Могет я подъеду????

Неактивен

 

#4 04.03.2009 21:05:30

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

Re: Требуется помощь специалиста.

Писать не в конфиг, надо подключиться к серверу с помощью любого клиента (например, стандартного
консольного клиента, входящего в поставку) под пользователем root и выполнить эту команду. Разумеется,
поменяв все названия.

UPD: Кстати, с Вашей системой запуска - можете просто создать несколько экземпляров MySQL на одной
машинке (для этого нужны разные порты и разные каталоги, в которых живет MySQL; ну и конфиги, разумеется,
разные).

Неактивен

 

#5 05.03.2009 13:24:03

proot
Участник
Откуда: Москва
Зарегистрирован: 03.03.2009
Сообщений: 21

Re: Требуется помощь специалиста.

Sir paulus!

Если бы в конфиге "клиента" тоже было назначение порта, то да ... Делаем проброс на роуторе, и работаем..., но конфиг "клиента" вот такой:

[Options]
Licence=10211640
Period=01/01/2000-31/12/2010

[Main]
State=0
Left=43
Top=44
Width=1036
Height=700

[Connection]
Server=***.***.***.***
Database=*******
Login=*****

[Workers]
SearchString=
Left=0
Top=0

[Worker]
Left=22
Top=29

[Scores]
SearchNumber=180
SearchString=
Year=14
Left=44
Top=58

[Score]
Left=145
Top=7

[Acts]
SearchNumber=
SearchString=
Year=14
Left=88
Top=116

[Act]
Left=128
Top=8

[Customer]
Left=66
Top=87

[Release]
Left=44
Top=58

Мне кажеться, (в смысле портов) - он пустой. И все удалённые клиенты лезут через один порт 3306. То ли микро-брандмауер писать  для клиентской части. То ли ещё один MySQL верхнего уровня на серваке... Разные фантастические советы получаю... (это от незнания)

Подключиться root-ом ... это здорово, ... ещё бы уметь, а если запаролен вход? А если выключилось (на регламент) питание на серваке, то эту комманду снова давать, а если "клиентов" чел. двадцать - тридцать..?

Я прошу прощения, но я пользователь. Когда я, разберусь с root-ом, то стану admin-ом и глупых вопросов задавать не буду..., но это в следующей жизни.
Стыдно мне, забивать форум ликбезом!

Отредактированно proot (05.03.2009 13:27:12)

Неактивен

 

#6 05.03.2009 14:54:49

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

Re: Требуется помощь специалиста.

Я бы попробовал добавить в [Connection] еще строку Port=3307 (а вдруг? wink).

Что касается прав доступа — они, разумеется, сохранятся. После включения питания они восстановятся такими,
как Вы их создали.

--

Проще всего выполнить на сервере команду
GRANT ALL ON db1.* TO user1@'%' IDENTIFIED BY '';
И в «клиенте» указать login=user1

Неактивен

 

#7 11.03.2009 18:46:09

proot
Участник
Откуда: Москва
Зарегистрирован: 03.03.2009
Сообщений: 21

Re: Требуется помощь специалиста.

Ещё я просмотрел всю клиентскую часть в HEX редакторе, но явно в ASCI кодах 3306, или port - эти понятия не видно. Где это может лежать?
Тоже вариант: раздать разные прошитые клиенты.
Или писать-таки микропрокси.

Неактивен

 

#8 11.03.2009 18:48:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Требуется помощь специалиста.

Не забудьте про порядок байт. 3306 должна выглядеть в HEX как EA0C

Неактивен

 

#9 11.03.2009 20:10:02

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

Re: Требуется помощь специалиста.

Ну и, разумеется, скорее всего, оно нигде не лежит, т.к. это порт по-умолчанию.

Неактивен

 

#10 11.03.2009 21:46:44

proot
Участник
Откуда: Москва
Зарегистрирован: 03.03.2009
Сообщений: 21

Re: Требуется помощь специалиста.

rgbeast написал:

Не забудьте про порядок байт. 3306 должна выглядеть в HEX как EA0C

Да, в exe-шнике "клиента" четыре раза встечается эта комбинация (ea 0c). В dll-ках, где 2, где 3 раза. Оно- конечно, это и совпадения возможны. Могет и нет ни где, как уважаемый paulus пишет...(но кто-то его, блин, в пакет вставлят ...!)
А вдруг прокатит... А можно спросить формулку пересчёта или будьте любезны: как будет 3307. Попробую с одним портом..
А, что означает Ваше замечание о порядке байт. Его надо учитывать при вычислении, при поиске или при "подмене"? А потом, ещё контрольная сумма поплывёт...а её, как восстанавливать?

Неактивен

 

#11 11.03.2009 22:13:50

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

Re: Требуется помощь специалиста.

eb0c

Как вариант: поднимите несколько IP на одной машинке, повесьте на разные IP (с помощью --bind-address)
и подключайтесь к разным IP по стандартному порту?

Дизассемблировать программу — жесткое решение... и вряд ли полезное, если честно.

Неактивен

 

#12 28.03.2009 14:45:39

proot
Участник
Откуда: Москва
Зарегистрирован: 03.03.2009
Сообщений: 21

Re: Требуется помощь специалиста.

Sirs paulus & rgbeast !!

Немного продвинулся (работы на 30 мин.)! Нашёл единственное место, при замене HEX которого- открывается работа по другому порту! Это файл клиентской части libmySQL.dll   - в нём два места "еа 0с".  При замене одного - получаем дополнительный параллельный процесс на компе, а замена второго - "не влияет". Не влияет - это значит: мы не получаем параллельного процесса , но и не вылетаем в ошибку!  Понятно, что где-то, ещё как , влияет!

Прошу прокомментировать следующую микропроблему (она была и раньше при запуске многих процессов с одним адресом).
С  раздела С\ подняли экземпляр SQL с адресом 3306, с раздела D\ подняли экземпляр SQL с адр.3307. Потом даём stop.bat с радела D\, но останавливается экземпляр с другого раздела , с раздела С\.  Если начинаем останавливать с раздела С\, то он останавливает свой процесс. Меняем последовательность С\ и D\, всё зеркально меняется . То есть получается, что , в какой последовательности поднимали, так и надо останавливать. Не удобно. А если процессов 20, а ночью надо всё  (а ещё хуже –частично )stop … и  пробэкапить кого-то.

Ещё, в клиентской части есть следующие библиотеки butil.dll, dbexpmysql.dll  и midas.dll  в них тоже есть заветные HEX "еа 0с", но их замена "не влияет". Могет это вообще «стандартные» компоненты и они не компилируются, и в них не надо ни чего искать?

На счёт IP: у меня ОДИН статический  входной  от провайдера на роуторе. Я не хотел бы покупать пул адресов.

Спасибо!

Неактивен

 

#13 30.03.2009 13:59:48

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

Re: Требуется помощь специалиста.

А программа то на дельфи! wink

1. Стандартные библиотеки мучать не надо, они не виноваты.
2. Скорее всего, в stop.bat написано «mysqladmin shutdown», который соединяется с сервером по tcp-ip
(на порт 3306) и отдает команду серверу остановиться. Отсюда эти «особенности» остановки. Достаточно
дописать --port и будет останавливаться нужный сервер.
3. Про пул адресов не понял smile

Неактивен

 

#14 30.03.2009 23:23:53

proot
Участник
Откуда: Москва
Зарегистрирован: 03.03.2009
Сообщений: 21

Re: Требуется помощь специалиста.

Stop.bat вот такой:
c:\opus\server\bin\mysqladmin --defaults-file=c:\opus\server\my.ini shutdown,
а как должно дописать или изменить?? (сам ini выше 04.03.2009 в 20:46:59).

Пул - это с адреса ..... по адрес .... А у меня просто, выделен статический публичный адресс - один. Хочу ещё - платим и получаем. А если удалённых клиентов 40?
40 IPишников не купить!

Спасибо, что не бросили!

Неактивен

 

#15 31.03.2009 13:11:53

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

Re: Требуется помощь специалиста.

Вот в c:\opus\server\my.ini нужно указать порт сервера, который нужно останавливать

Неактивен

 

#16 09.08.2009 01:57:25

Andrey_3306
Участник
Зарегистрирован: 03.08.2009
Сообщений: 6

Re: Требуется помощь специалиста.

[Connection]
Server=***.***.***.***
Database=*******
Login=*****


попробуйте  Server=***.***.***.***:3307  или что надо вам

Неактивен

 

Board footer

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