Понадобилось мне в схеме visio 2007 около фигурки компа (схема ЛВС здания) выводить его текущее имя, пользователя, IP. Как вы догадались, это для печати актуальной красивой схемки на стенку. Есть mysql база на сайте (ubuntu 12.04 server) в интрасети организации, где эти данные хранятся и обновляются по мере надобности для вывода разных отчетов и просто контроля и удобства. Просто напрашивалось это всё связать.

Просто так visio не хочет работать с mysql базой, для исправления этого недоразумения идем на http://dev.mysql.com/downloads/connector/odbc/  скачиваем нужной версии коннектор. Устанавливаем его. Затем идем в visio (visio 2007 в Windows 7) -> окно внешних данных -> правой кнопочкой -> источник данных -> добавить. Выбираем - Другой источник данных OLEDB или ODBC - далее. Затем - Дополнительно - далее. Выбираем (оно стоит по умолчанию обычно) - Microsoft OLE DB Provider for ODBC Drivers - далее. В окошке с настройками сразу жмыкаем - Использовать строку соединения - и жмем - сборка. Выбираем вкладку - Источник данных компьютера - Создать. Далее выбираем между Пользовательским и Системным режимом, в описании там вполне ясно указаны отличия - жмем далее. И вот наконец мы добрались до списка, где можно выбрать установленный нами драйвер - MySQL ODBC 5.3 Unicode Driver (такой был у меня), при этом можно выбрать версию кодировки драйвера (Unicode - для UTF-8 к примеру, для избежания кракозябр).  Выбираем его, жмем далее и готово. В следующем окне мы получаем окно настроек нашего коннектора для подключения к базе. 

Data Source Name - имя нашего подключения, как оно будет отображено в дальнейшем при выборе источника данных в visio.

Description - описание (не обязательная для заполнения строка).

TCP/IP Server - вбиваем IP сервера, где лежит нужная нам mysql база.

Port - по умолчанию используется 3306, но если мы в настройках mysql указали другой, то переписываем его и здесь.

Named Pipe - именованный канал - неактивно если выбрали подключение по IP.

User - логин для подключения к базе.

Paswword - пароль для подключения к базе.

Database - а вот тут должен появиться список баз при правильных настройках при нажатии и если не появилось ничего, то надо проверить настройки mysql, которые опишу ниже.

Test - выбрав базу и нажав на кнопку можно проверить успешность подключения. Может быть что список баз мы видим, а вот к нужной подключиться прав не хватает.

Details - эта кнопка открывает еще кучу полей и вкладок для настроек (например настройку SSL доступа и т.д.), но в простых случаях можно её не трогать.

База выбрана, тест пройден, жмем ОК. Теперь видим что наше подключение появилось в списке - Источники данных компьютера. Выбираем его еще раз, видим еще раз окно настроек, жмем ок и видим, что поле строки соединения заполнилось нужными данными. Жмем ОК и видим окошко с списком табличек нашей базы, где выбираем нужную. Затем нам предложат сохранить все эти настройки в файлик подключения, выбираем где и как, жмем готово. 

В следующем окне нам предлагают выбрать этот файлик или использовать другой для подключения. Выбираем и видим окно с выбором выводимых в visio столбцов и строк из нашей базы. Выбираем, жмем далее и готово. 

Ура! При должном везении и сноровке мы увидим в панели "Внешние данные" вкладочку с данными нашей базы. 

Если у нас на этапе ввода данных для подключения к базе (где кнопочка Test) не появляются базы для выбора (поле пустое), то возможно у нас сервер не настроен для подключения к базе извне или там иные ограничения. Перво наперво можно проверить файлик /etc/mysql/my.cnf (это если у нас база лежит на сервере с ubuntu server). Подключаемся, например,  через putty к серверу и через

sudo nano /etc/mysql/my.cnf

открываем файл для редактирования. Нам нужна строчка

bind-address = 127.0.0.1

её надо закомментировать, добавив # в начало строки или добавить следующую строку:

bind-address =  0.0.0.0 //разрешаем подключение с любого адреса.

Далее перезагружаем сервер MYSQL следующей командой:

sudo service mysql restart

После перезагрузки сервера нужно создать нового пользователя, которому надо будет установить с какого IP адреса он будет подключатся к базе, либо изменить уже существующую привилегию. Можно воспользоваться интерфейсом управления базой данных, например таким как phpmyadmin, либо ввести команду непосредственно в терминал:

mysql //попадаем в управление mysql

GRANT ALL PRIVILEGES ON *.* TO 'root'@'remote_addr' IDENTIFIED BY 'password' WITH GRANT OPTION;

Вместо 'remote_addr' укажите адрес хоста с которого планируется подключаться или можно указать '%' тогда подключение будет разрешено с любого адреса, ’password’ - пароль пользователя.

Для непривилегированного пользователя вместо ’GRANT ALL PRIVILEGES’ можно указать конкретные разрешённые операции, например:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON *.* TO 'root'@'remote_addr' IDENTIFIED BY 'password';

Так же можно ограничить доступ к базам и таблицам указав вместо ’ON *.*’ - ’ON table’ или ’ON database.*’или ’ON database.table’, где ’table’ - имя таблицы, а ’database’ - имя базы данных.

Ура! Ура! Теперь то уж точно должно работать. Если все еще не цепляется, то проверьте какой порт у вас в настройках mysql, настройки фаервола, антивируса, работоспособность самого сервера и службы mysql.

Для привязки конкретной строчки данных к фигуре в visio её можно просто перетащить на нужную. Через правую кнопку по фигуре - Данные - Данные фигуры - Определить - можно определить настройки вывода этих данных. Но это уже тема для другой статьи.

Удачи вам!