Настройка Дентал-Софт для работы с MySQL в Linux
В этой заметке будет рассмотрено как использовать СУБД MySQL в Linux-системах из клиентского ПО Дентал-Софт под Microsoft Windows, с использование кодировки UTF8. Но теоретически процесс настройки схож с любым другим клиентским ПО, использующим MySQL в кодировке UTF8.
Процесс установки Дентал-Софт и MySQL Connector/ODBC для Windows тривиален и расписывать его я не буду. Рассмотрю лишь саму настройку MySQL под Linux. Используемый софт:
- Дентал-Софт 1.7.14
- MySQL 5.5.47
- Debian Wheezy 7.9
Устанавливаем и настраиваем MySQL.
# apt-get install mysql-server mysql-client
Далее вас спросят задать пароль root. По завершению установки открываем и редактируем конфигурационный файл:
# nano /etc/mysql/my.cnf
и находим строчку:
#bind-address = 0.0.0.0
Для того, чтобы к серверу БД можно было обращаться с любого IP адреса строка должна быть закоментирована (то есть начинаться с #).
Дентал-Софт работает в кодировках UTF8 и CP1251. По умолчанию MySQL 5.1 и выше настроен на работу в UTF8, но некоторые параметры от версии к версии могут отличаться. Установим кодировку UTF8 принудительно.
Находим в том же my.cnf раздел [mysqld]. Настройки UTF8 выглядят следующим образом:
[mysqld]
# UTF8 setings
character-set-server = utf8
collation-server = utf8_unicode_ci
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
skip-character-set-client-handshake
Так же нужно переключить север MySQL на использование нижнего регистра в именах таблиц:
lower_case_table_names = 1
Сохраняем файл конфигурации (в nano нажимаем cntrl+O) и для обновления параметров перезапускаем MySQL:
# /etc/init.d/mysql restart
После чего логинимся в консоль mysql:
# mysql -u root -p
Вводим пароль root и проверяем заданные нами настройки кодировок — вводим в консоли MySQL:
show variables like "%character%";show variables like "%collation%";
Результат должен быть:
mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
Создаем базу данных и пользователей.
Далее, не выходя из консоли MySQL создаем нового пользователя:
mysql> CREATE USER 'DentalSoft'@'localhost' IDENTIFIED BY 'some_password';
где: some_password — пароль пользователя DentalSoft.
Разрешаем пользователю DentalSoft доступ с любого IP адреса и назначем права DBA:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'DentalSoft'@'%' IDENTIFIED BY 'some_password';
Проверяем права пользователя DentalSoft:
mysql> SHOW GRANTS FOR 'DentalSoft'@'%';
Результатом выполнения должно быть:
Grants for DentalSoft@%
+------------------------------------------------------------------+
GRANT ALL PRIVILEGES ON *.* TO 'DentalSoft'@'%' IDENTIFIED BY PASSWORD '*0DC3BCF65D8832D42E3856FEF31D25647E8FA3DD'
Не выходя из консоли MySQL, cоздаем пустую БД и смотрим её параметры:
mysql> CREATE DATABASE dental_soft;
mysql> SHOW CREATE DATABASE dental_soft;
Результатом должно быть:
Database | Create Database
--------------------------------------------------------------------
dental_soft | CREATE DATABASE `dental_soft` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */
Настраиваем Дентал-Софт.
Открываем на клиентской windows-машине в проводнике:
C:\Program Files (x86)\Дентал-Софт\Дентал-Софт\_SYS\SQL
и в зависимости от версии установленного драйвера MySQL Connector/ODBC находим файл:
init_sql_1.sql — для версии ODBC 3.5;
init_sql_4.sql — для версии ODBC 5.1;
init_sql_9.sql — для версии ODBC 5.2;
init_sql_10.sql — для версии ODBC 5.3.
открываем его в блокноте и вставляем содержимое с заменой:
SET CHARACTER SET utf8;
set character_set_client='utf8';
set character_set_results='utf8';
set collation_connection='utf8_unicode_ci';
Запускаем Дентал-Софт и создаем подключение:
- IP-адрес вашего Debian сервера с MySQL
- Тип базы данных: MySQL ODBC 5.1 (3.5, 5.2 или 5.3 — в зависимости от версии установленного драйвера ODBC);
- Имя базы данных: dental_soft;
- Имя пользователя, пароль и наименование подключаемой базы.
При запуске вас предупредит о том, что базы не существует и нужно её создать (схему мы создали, но данных там еще нет). Соглашаемся, ждем завершения. Настройка завершена.
ВНИМАНИЕ! Дентал-Софт до версии 1.7.20 некорректно работает с кодировками ‘utf8_unicode_ci’ и ‘utf8_general_ci’. Если на одном из клиентов произошла конверсия базы и при каждом посоледующем запуске предлагает сконвертировать, то нужно выполнить:
Для смены кодировки базы на сервере:
mysql> ALTER DATABASE dental_soft CHARACTER SET utf8 COLLATE utf8_unicode_ci;
и в конфигурации соединения для ODBC-коннектора указать:
SET CHARACTER SET utf8;
set character_set_client='utf8';
set character_set_results='utf8';
set collation_connection='utf8_general_ci';
Работать тоже будет, но каждый раз будет ругаться, что:
Переменные collation_server и collation_connection не равны друг-другу.
Обратите так же внимание, что язык интерфейса Windows и параметр “использовать язык для программ не поддерживающих Unicode” для Дентал-Софт должен быть обязательно русский, а для активации по программным ключам нужно войти под локальным (не доменным) администратором.