«LXC debian 8» и «MySql»: разница между страницами

Материал из support.qbpro.ru
(Различия между страницами)
imported>Supportadmin
 
imported>Vix
Нет описания правки
 
Строка 1: Строка 1:
[https://www.google.ru Источник]
==Help MySql==
=== Настройка GRUB для LXC===
* Список пользователей:
В /etc/default/grub изменить параметр
SELECT USER from mysql.user;
  <nowiki>
* Создание пользователя:
GRUB_CMDLINE_LINUX="cgroup_enable=memory"
  CREATE USER 'user'@'localhost' IDENTIFIED BY 'secret';
</nowiki>
* Удаление пользователя:
Хотя официально [https://wiki.debian.org/LXC] сказано, что делать ничего не надо.
DROP USER user@localhost;
* Предоставить права пользователю:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';
* Предоставить супер права пользователю:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost' WITH GRANT OPTION;
* Права равные root для работы через phpmyadmin
GRANT ALL PRIVILEGES ON  *.* TO 'user'@'%' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;


=== Настройка ядра для LXC ===
==Настройка PhpMyAdmin==
В /etc/sysctl.conf [https://habrahabr.ru/post/120717/]
Процедура «переподключения» phpMyAdmin на работу с внешним сервером достаточно проста, но вызывает вопросы у тех, кто занимается всем этим недавно или неглубоко.
<nowiki>
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.all.proxy_arp=1
</nowiki>


grub_updare, reboot
В данной статье мы рассмотрим несколько вариантов подключения phpMyAdmin ко внешнему серверу, так как задачи и условия у всех разные. В примере я использую сервер баз данных MariaDB, ОС Ubuntu и phpMyAdmin версии 4.5.4, что практически не важно, так как всё достаточно просто. PhpMyAdmin установлен на домашний ПК, но с тем же успехом он может быть настроен и на удалённом сервере. Имеется ввиду, что всё прикладное ПО, такое как непосредственно сам сервер БД, http-сервер и php у вас уже установлено.


=== Настройка сети для LXC ===
* Пример первый (доступ с паролем).
На хост-машине:


<nowiki>
Сервер баз данных расположен на машине с адресом 10.10.1.10. PhpMyAdmin устанавливаем на локальный ПК с адресом 10.10.1.20. Необходимо убедиться, что сервер баз данных принимает внешние соединения. Правим my.cnf (/etc/mysql/my.cnf). В строке bind-address по умолчанию указан адрес 127.0.0.1, что запрещает серверу принимать внешние соединения. Заменяем его на 0.0.0.0, что разрешит внешние соединения с любого адреса. В целях безопасности лучше уточнить адрес, если вы не планируете подключаться к серверу из разных источников. В этом примере будет использоваться строка следующего вида:
apt-get install bridge-utils
</nowiki>


Если планируется использовать виртуальные сети, дополнительно:
bind-address = 10.10.1.20


<nowiki>
Сохраняем и перезагружаем.
apt-get install vlan
</nowiki>


В /etc/network/interfaces:
  sudo service mysql restart
  <nowiki>
#allow-hotplug eth0
#auto eth0
#iface eth0 inet static


На ПК (или другой удалённый сервер) устанавливаем phpMyAdmin.


auto br0
sudo apt install phpmyadmin
iface br0 inet static
      address 192.168.150.30
      netmask 255.255.255.0
      network 192.168.150.0
      broadcast 192.168.150.255
      gateway 192.168.150.1
      dns-nameservers 192.168.150.1
      bridge_ports eth0
      bridge_fd 0
      bridge_maxwait 0</nowiki>


=== Создание контейнера ===
В процессе установки отказываемся от конфигурации (конфигурировать нечего; сервер баз данных на удалённой машине).
Создаем контейнер [https://wiki.debian.org/LXC#RootFS_creation]


<nowiki>lxc-create -t debian -n nodejs</nowiki>
Далее правим конфигурационный файл phpMyAdmin config.inc.php (/etc/phpmyadmin/config.inc.php). Если это была свежая установка и на локальном хосте нет сервера баз данных, то удаляем все строки (кроме первой «<?php») и пишем следующее:


Сразу меняем пароль root на свой.
/* External Server #1 */
  $i++;
  $cfg['Servers'][$i]['verbose'] = 'Server Name';
  $cfg['Servers'][$i]['host'] = '10.10.1.10';
  $cfg['Servers'][$i]['connect_type'] = 'tcp';
  $cfg['Servers'][$i]['extension'] = 'mysqli';
  $cfg['Servers'][$i]['auth_type'] = 'cookie';
  $cfg['Servers'][$i]['AllowNoPassword'] = false;


<nowiki>
Вместо Server Name вписываем что угодно. Сохраняем и закрываем файл.
старт в режиме консоли (не очень удобно, точнее вообще неудобно)


lxc-start -n nodejs
==Конвертирование базы из postgresql в mysql==
* скачиваем [https://github.com/ChrisLundquist/pg2mysql pg2mysql]


или старт в режиме демона и присоединяется к консоли контейнера, для выхода из консоли exit
git clone https://github.com/ChrisLundquist/pg2mysql.git
cd pg2mysql


lxc-start -dn nodejs
* сохраняем дамп из postgresql ('''пример сохранение всех таблиц для wordpress - wp*''')
lxc-attach -n nodejs
sudo -u postgres pg_dump --quote-all-identifiers --no-acl --no-owner --table=wp_* --format p --data-only wordpress -f wordpress_pgsql.sql
</nowiki>
===Настройка параметров контейнера===
Конфигурируем контейнер /var/lib/lxc/nodejs/config. Обязательно обратить внимание на lxc.network.veth.pair [http://xgu.ru/wiki/LXC] - это имя интерфейса в хост машине. [https://wiki.debian.org/LXC Здесь] про это не сказано, и работать с сетью сможет только один контейнер.  


  <nowiki>
* конвертируем в формат mysql
  php pg2mysql_cli.php worpress_pgsql.sql wordpress_mysql.sql


lxc.rootfs = /var/lib/lxc/nodejs/rootfs
* теперь необходимо заменить все таблицы с `"public"."wp_*"` на 'wp_*` это можно сделать в редакторе по F4
lxc.include = /usr/share/lxc/config/debian.common.conf
* не забудьте исправить '''"` (''' на ''''('''
lxc.mount = /var/lib/lxc/nodejs/fstab
* теперь меняем sql команду с INSERT на REPLACE так же по F4
lxc.utsname = nodejs
* все, дамп можно заливать в базу, предварительно создайте из wordpress начальную структуру таблиц через install и потом вносите данные.
lxc.arch = amd64
   
lxc.autodev = 1
lxc.kmsg = 0
 
#Количество /dev/tty
lxc.tty = 6
 
# Autostart
lxc.start.auto = 1
lxc.start.delay = 5
lxc.start.order = 100
 
# eth0
 
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.veth.pair= br0-1
lxc.network.name = eth0
lxc.network.hwaddr = 00:11:12:00:88:99
 
#mount папка на хост-машине            папка в контейнере, относительно хост-машины
#lxc.mount.entry =  /home/debs  /var/lib/lxc/nodejs/rootfs/home/debs none bind 0 0
</nowiki>
 
=== Настройка параметров сети внутри LXC контейнера===
Настраиваем сеть не через конфигурацию, а в контейнере (можно и так, и так) /var/lib/lxc/nodejs/rootfs/etc/network/interfaces
<nowiki>
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interfac
 
allow-hotplug eth0
auto eth0
iface eth0 inet static
      address 192.168.150.33
      netmask 255.255.255.0
      network 192.168.150.0
      broadcast 192.168.150.255
      gateway 192.168.150.1
      dns-nameservers 192.168.150.1
</nowiki>
 
=== Настройка репозитариев и обустройство контейнера ===
Правим /var/lib/lxc/nodejs/rootfs/etc/apt/sources.list
<nowiki>
#deb file:/home/debs /
deb http://mirror.mephi.ru/debian/ jessie main
deb-src http://mirror.mephi.ru/debian/ jessie main
 
deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib
 
# jessie-updates, previously known as 'volatile'
deb http://mirror.mephi.ru/debian/ jessie-updates main contrib
deb-src http://mirror.mephi.ru/debian/ jessie-updates main contrib
 
deb http://ftp.ru.debian.org/debian/ jessie main contrib non-free
deb http://http.debian.net/debian jessie-backports main contrib non-free
 
#deb http://www.deb-multimedia.org jessie main non-free
#deb http://www.deb-multimedia.org jessie-backports main
 
 
</nowiki>
 
Изначально контейнер пустой (установлено 136 пакетов). Даже ping отсутствует.
<nowiki>
apt-get update
apt-get install aptitude apt-utils mc ssh iputils-ping iptables cron wget
</nowiki>
 
=== Если нет сети в LXC контейнере ===
Если интернета в контейнере не появилось, ping отсутствует, то как вариант можно создать локальный репозитарий, подмонтировать его в контейнер, в sources.list добавить ссылку на него и поставить bind9 и resolvconf.
* качаем один или все три установочные диска с  [https://www.debian.org/CD/http-ftp/ сайта]
* создаем папку на хост-машине /home/debs
* из каталога pool каждого диска копируем в /home/debs каталоги main и contrib
* создаем индекс репозитория
<nowiki>
cd /home/debs
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
</nowiki>
* В sources.list контейнера добавить первой строкой (остальные #)
<nowiki>
deb file:/home/debs /
</nowiki>
* В конфигурацию контейнера добавить
<nowiki>
lxc.mount.entry =  /home/debs  /var/lib/lxc/nodejs/rootfs/home/debs none bind 0 0
</nowiki>
* Запустить контейнер и в нем поставить пакеты
<nowiki>
lxc-start -dn nodejs
lxc-attach -n nodejs
apt-get update
apt-get install aptitude apt-utils mc ssh iputils-ping iptables cron wget resolvconf
apt-get install bind9
exit
lxc-stop -n nodejs
lxc-start -dn nodejs
</nowiki>
После этого, при правильном конфигурировании gateway и dns-nameservers все должно заработать
 
 
=== Настройка vlan для LXC ===
Пример для двух vlan. На хост-машине /etc/network/interfaces:
  <nowiki>
auto lo
iface lo inet loopback
 
auto eth0.1
iface eth0.1 inet manual
        vlan_raw_device eth0
 
auto eth0.2
iface eth0.2 inet manual
        vlan_raw_device eth0
 
######### Интерфейсы для хост-машины
auto br0_1
iface br0_1 inet static
      address 192.168.10.90
      netmask 255.255.255.0
      broadcast 192.168.102.255
      bridge_ports eth0.1
      bridge_fd 0
      bridge_maxwait 0
 
auto br0_2
iface br0_2 inet static
      address 9.23.3.169
      netmask 255.255.255.128
      network 9.23.3.128
      broadcast 9.23.3.255
      gateway 9.23.3.129
      dns-nameservers 9.23.3.13 9.23.4.2
      bridge_ports eth0.2
      bridge_fd 0
      bridge_maxwait 0
</nowiki>
 
Настройки контейнера:
   
   
<nowiki>
lxc.rootfs = /var/lib/lxc/nodejs/rootfs
lxc.include = /usr/share/lxc/config/debian.common.conf
lxc.mount = /var/lib/lxc/nodejs/fstab
lxc.utsname = nodejs
lxc.arch = amd64
lxc.autodev = 1
lxc.kmsg = 0
#Количество /dev/tty
lxc.tty = 6
# Autostart
lxc.start.auto = 1
lxc.start.delay = 5
lxc.start.order = 100
# eth0
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0_1
# имя устройства внутри контейнера
lxc.network.name = eth0
lxc.network.veth.pair= br0_1-1
lxc.network.hwaddr = 00:11:22:33:88:99
# eth1
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0_2
lxc.network.veth.pair= br0_2-1
# имя устройства внутри контейнера
lxc.network.name = eth1
lxc.network.hwaddr = 00:11:62:77:88:00
</nowiki>
В контейнере /etc/network/interfaces:
<nowiki>
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
      address 192.168.102.91
      netmask 255.255.255.0
      broadcast 192.168.102.255
auto eth1
iface eth1 inet static
      address 9.23.3.170
      netmask 255.255.255.128
      network 9.23.3.128
      broadcast 9.23.3.255
      gateway 9.23.3.129
      dns-nameservers 9.23.3.13 9.23.4.2
</nowiki>


'''ИСТОЧНИКИ'''
<hr>
* [http://www.opennet.ru/docs/RUS/mysqladm/userman.html Управление пользователями в MySQL]
* [https://proft.me/2011/07/19/mysql-poleznye-komandy-i-nastrojki/ mysql: полезные команды и настройки ]
* [https://www.newalive.net/190-upravlenie-vneshnimi-bazami-dannyh-cherez-phpmyadmin.html PhpMyAdmin]
<hr>
* [http://gahcep.github.io/blog/2013/03/11/linux-mysql-setup/ Правильная установка и настройка MySQL]
* [https://www.hostcms.ru/documentation/server/mysql/ Настройка MySQL]
* [http://linux.mixed-spb.ru/databases/mysql_setup.php Установка и первоначальная настройка MySQL в linux]
* [http://linux.cpms.ru/?p=180 Руководство по MySQL для начинающих]
* [http://cruw.blogspot.ru/2011/11/mysql.html Установка и настройка MySql]
* [https://firstwiki.ru/index.php/%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D1%82%D1%8C_%D0%B4%D0%B0%D0%BC%D0%BF_MySQL_%D0%B1%D0%B0%D0%B7%D1%8B_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C Как загрузить дамп MySQL базы через консоль]
* [https://habr.com/post/105954/ MySQL шпаргалки]
* [https://www.newalive.net/190-upravlenie-vneshnimi-bazami-dannyh-cherez-phpmyadmin.html Управление внешними базами данных через phpMyAdmin]
* [https://geeksmagazine.org/post/7/kak-sozdat-polzovatelya-i-dat-emu-prava-v-mysql Как создать пользователя и дать ему права в MySQL]
* [https://andy-blog.ru/kak-sozdat-novogo-polzovatelya-mysql Как создать нового пользователя MySQL и настроить права доступа ]
* [https://ruhighload.com/%D0%9A%D0%B0%D0%BA+%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C+mysql+master-slave+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8E%3F Как настроить MySQL Master-Slave репликацию?]
* [https://server-gu.ru/mysql-replication-master-slave/ Настройка репликации MySQL MASTER SLAVE]
* [http://blog.anthonyaxenov.ru/2018/10/15/%D1%88%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0-master-slave-%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-mysql-5-7/ Шпаргалка: Master-slave репликация MySQL 5.7]


Для каждого следующего контейнера меняется в конфигурации имя устройства  например так:  
'''ПОЛЕЗНОЕ:'''
<nowiki>
<hr>
lxc.network.veth.pair= br0_1-1
* [https://www.8host.com/blog/replikaciya-baz-dannyx-mysql-po-tipu-master-slave/ Репликация баз данных MySQL по типу Master/Slave]
lxc.network.veth.pair= br0_2-1
</nowiki>
следующий контейнер
<nowiki>
lxc.network.veth.pair= br0_1-2
lxc.network.veth.pair= br0_2-2
</nowiki>
Главное, чтобы не совпадали имена интерфейсов, создаваемых на хост-машине. Количество мостов соответствует количеству vlan. По одному на каждый vlan.

Версия от 03:46, 5 мая 2020

Help MySql

  • Список пользователей:
SELECT USER from mysql.user;
  • Создание пользователя:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'secret';
  • Удаление пользователя:
DROP USER user@localhost;
  • Предоставить права пользователю:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';
  • Предоставить супер права пользователю:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost' WITH GRANT OPTION;
  • Права равные root для работы через phpmyadmin
GRANT ALL PRIVILEGES ON  *.* TO 'user'@'%' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Настройка PhpMyAdmin

Процедура «переподключения» phpMyAdmin на работу с внешним сервером достаточно проста, но вызывает вопросы у тех, кто занимается всем этим недавно или неглубоко.

В данной статье мы рассмотрим несколько вариантов подключения phpMyAdmin ко внешнему серверу, так как задачи и условия у всех разные. В примере я использую сервер баз данных MariaDB, ОС Ubuntu и phpMyAdmin версии 4.5.4, что практически не важно, так как всё достаточно просто. PhpMyAdmin установлен на домашний ПК, но с тем же успехом он может быть настроен и на удалённом сервере. Имеется ввиду, что всё прикладное ПО, такое как непосредственно сам сервер БД, http-сервер и php у вас уже установлено.

  • Пример первый (доступ с паролем).

Сервер баз данных расположен на машине с адресом 10.10.1.10. PhpMyAdmin устанавливаем на локальный ПК с адресом 10.10.1.20. Необходимо убедиться, что сервер баз данных принимает внешние соединения. Правим my.cnf (/etc/mysql/my.cnf). В строке bind-address по умолчанию указан адрес 127.0.0.1, что запрещает серверу принимать внешние соединения. Заменяем его на 0.0.0.0, что разрешит внешние соединения с любого адреса. В целях безопасности лучше уточнить адрес, если вы не планируете подключаться к серверу из разных источников. В этом примере будет использоваться строка следующего вида:

bind-address		= 10.10.1.20

Сохраняем и перезагружаем.

sudo service mysql restart

На ПК (или другой удалённый сервер) устанавливаем phpMyAdmin.

sudo apt install phpmyadmin

В процессе установки отказываемся от конфигурации (конфигурировать нечего; сервер баз данных на удалённой машине).

Далее правим конфигурационный файл phpMyAdmin config.inc.php (/etc/phpmyadmin/config.inc.php). Если это была свежая установка и на локальном хосте нет сервера баз данных, то удаляем все строки (кроме первой «<?php») и пишем следующее:

/* External Server #1 */
 $i++;
 $cfg['Servers'][$i]['verbose'] = 'Server Name';
 $cfg['Servers'][$i]['host'] = '10.10.1.10';
 $cfg['Servers'][$i]['connect_type'] = 'tcp';
 $cfg['Servers'][$i]['extension'] = 'mysqli';
 $cfg['Servers'][$i]['auth_type'] = 'cookie';
 $cfg['Servers'][$i]['AllowNoPassword'] = false;

Вместо Server Name вписываем что угодно. Сохраняем и закрываем файл.

Конвертирование базы из postgresql в mysql

git clone https://github.com/ChrisLundquist/pg2mysql.git 
cd pg2mysql
  • сохраняем дамп из postgresql (пример сохранение всех таблиц для wordpress - wp*)
sudo -u postgres pg_dump --quote-all-identifiers --no-acl --no-owner --table=wp_* --format p --data-only wordpress -f wordpress_pgsql.sql
  • конвертируем в формат mysql
php pg2mysql_cli.php worpress_pgsql.sql wordpress_mysql.sql
  • теперь необходимо заменить все таблицы с `"public"."wp_*"` на 'wp_*` это можно сделать в редакторе по F4
  • не забудьте исправить "` ( на '(
  • теперь меняем sql команду с INSERT на REPLACE так же по F4
  • все, дамп можно заливать в базу, предварительно создайте из wordpress начальную структуру таблиц через install и потом вносите данные.


ИСТОЧНИКИ



ПОЛЕЗНОЕ: