Архив автора: admin

Как сбрасывать значения автоинкремента в MySQL

Резюме : в этой статье мы покажем вам различные способы сброса значений автоинкремента столбцов AUTO_INCREMENT в MySQL.

MySQL предоставляет вам полезную функцию под названием автоинкремент . Вы можете присвоить атрибут AUTO_INCREMENT столбцу таблицы, чтобы создать уникальный идентификатор для новой строки. Как правило, вы используете атрибут AUTO_INCREMENT для столбца первичного ключа таблицы.

Всякий раз, когда вы вставляете новую строку в таблицу, MySQL с помощью атрибута AUTO_INCREMENT автоматически присваивает порядковый номер столбцу.

Например, если в таблице восемь строк, и вы вставляете новую строку без указания значения для столбца автоинкремента, MySQL автоматически вставит новую строку id со значением 9.

Иногда вам может понадобиться сбросить значение столбца автоинкремента, чтобы идентификатор первой записи, который вы вставляете в таблицу, начинался с определенного числа, например, 1.

В MySQL вы можете сбросить значения автоинкремента различными способами.

 

Примеры сбрасывания значения автоматического приращения в MySQL

Сначала создайте таблицу с именем   tmp и присвойте  атрибут AUTO_INCREMENT столбцу id первичного ключа.

CREATE TABLE tmp (

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(45) DEFAULT NULL,

PRIMARY KEY (id)

);

 

Во-вторых, вставьте пример данных в таблицу tmp:

INSERT INTO tmp(name)

VALUES('test 1'),

('test 2'),

('test 3');

 

В- третьих, запрос к таблице tmp для проверки операции вставки:

SELECT

*

FROM

tmp;

 

Как сбрасывать значения автоинкремента в MySQL

 

У нас есть три строки со значениями столбца ID: 1, 2 и 3. Отлично! Пора попрактиковаться в сбросе значения автоинкремента столбца ID.

 

Использование инструкции ALTER TABLE

Вы можете сбросить значение автоинкремента с помощью оператора ALTER TABLE. Синтаксис оператора ALTER TABLE  для сброса значения автоинкремента выглядит следующим образом:

ALTER TABLE table_name AUTO_INCREMENT = value;

 

Вы указываете имя таблицы после оператора ALTER TABLE и имя value, которое вы хотите сбросить в выражении AUTO_INCREMENT=value.

Обратите внимание, что значение value должно быть больше или равно текущему максимальному значению столбца автоинкремента.

Давайте удалим последнюю запись в таблице tmp с id значением 3:

DELETE FROM tmp

WHERE

ID = 3;

 

Если вы вставите новую строку, MySQL назначит 4  столбцу id новой строки. Однако вы можете сбросить число, сгенерированное MySQL, на 3, используя следующую инструкцию ALTER TABLE:

ALTER TABLE tmp AUTO_INCREMENT = 3;

 

Теперь давайте попробуем вставим новую строку в таблицу tmp и запросить данные из нее, чтобы увидеть эффект:

INSERT INTO tmp(name)

VALUES ('MySQL example 3');



SELECT

*

FROM

tmp;

 

Как сбрасывать значения автоинкремента в MySQL

 

У нас есть три строки с последним значением автоинкремента, равным 3 вместо 4, что мы и ожидали.

 

Использование оператора TRUNCATE TABLE

Оператор TRUNCATE TABLE удаляет все данные из таблицы и сбрасывает значение автоинкремента на ноль.

Следующее иллюстрирует синтаксис оператора TRUNCATE TABLE:

TRUNCATE TABLE table_name;

 

Используя оператор TRUNCATE TABLE, вы удаляете все данные из таблицы навсегда и сбрасываете значение автоинкремента на ноль.

 

Использование операторов DROP TABLE и CREATE TABLE

Вы можете использовать пару операторов: DROP TABLE и CREATE TABLE, чтобы сбросить столбец автоинкремента. Обратите внимание, что этот метод удаляет все данные из таблицы навсегда.

Как и оператор TRUNCATE TABLE, эти операторы удаляют таблицу и воссоздают ее, поэтому значение автоинкремента сбрасывается на ноль.

DROP TABLE table_name;

CREATE TABLE table_name(...);

 

В этой статье вы узнали, как различными способами сбросить значение автоинкремента в MySQL. Первый способ предпочтительнее, потому что он самый простой и не имеет побочных эффектов.



2020-02-06T13:01:54
База данных MySQL

Установка WireGuard на Ubuntu/Debian

Сегодня в статье приведу пример по установке и настройке VPN сервера WireGuard для операционных систем Ubuntu и Debian. Также данная статья будет справедлива и для всех производных систем данного типа.

WireGuard – это современная высокопроизводительная VPN для Linux,Windows, MacOS. Главной функцией WireGuard является обеспечение безопасного соединения между сторонами через сетевой интерфейс, зашифрованный с помощью аутентификации по открытому ключу. Это означает, что, в отличие от большинства виртуальных частных сетей, WireGuard не применяет топологию, что позволяет создавать различные конфигурации путем изменения конфигураций окружающей сети. Эта модель предлагает большую производительность и гибкость.

Сейчас WireGuard готовится к включению в состав ядра Linux. Если быть точнее, то он появится в ядре версии 5.6, он даже получил похвалу от Линус Торвальдса и в американском сенате.

Специалисты проверили скорость работы WireGuard и выяснили, что он способен обойти большинство протоколов шифрования в том числе широко известный протокол OpenVPN.

Причина, которая объясняет высокую скорость работы WireGuard, это применение быстрого и современного алгоритма шифрования, благодаря которому скорость передачи данных очень высока.

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

Установка и настройка при помощи скрипта

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

Первым шагом подготовим нашу систему:

sudo -su
apt update && apt upgrade -y
apt install curl

Далее скачиваем скрипт.

curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh

Делаем его исполняемым:

chmod +x wireguard-install.sh

Запускаем установку и настройку WireGuard

./wireguard-install.sh

Установка WireGuard на Ubuntu

Установку нашего VPN WireGuard я буду производить на сервере под управлением операционной системы Ubuntu/Debian. И так поехали.

Ubuntu 18.04

Для начала надо добавить официальный репозиторий в систему:

sudo add-apt-repository ppa:wireguard/wireguard
  • Обновляем индексы
sudo apt update
  • Устанавливаем wireguard
sudo apt install -y wireguard wireguard-dkms iptables resolvconf qrencode

Ubuntu 20.04/22.04

Так как пакет входит в официальный репозиторий, то необходимо набрать всего лишь данные команды:

  • Обновляем индексы
sudo apt update
  • Устанавливаем wireguard
sudo apt install -y wireguard wireguard-dkms iptables resolvconf qrencode

Установка WireGuard на Debian

Для того чтобы установить WireGuard на Debian с начало необходимо авторизоваться под root пользователем:

sudo su

Далее набираем следующее:

echo "deb http://deb.debian.org/debian buster-backports main" >/etc/apt/sources.list.d/backports.list
apt update
apt install -y iptables resolvconf qrencode
apt install -y -t buster-backports wireguard

Для остальных операционных систем можете посмотреть официальную страничку инсталляции.

Также установите заголовки для вашего ядра, если вы еще этого не сделали:

apt-get install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//')

Настройка VPN WireGuard на серверной части

Давайте теперь настроим наш высокопроизводительный VPN на сервере wireguard. Для этого создадим файл конфигурации и необходимые ключи шифрования. Все действия выполняем из под root.

sudo su
(umask 077 && printf "[Interface]nPrivateKey = " | sudo tee /etc/wireguard/wg0.conf > /dev/null)
wg genkey | sudo tee -a /etc/wireguard/wg0.conf | wg pubkey | sudo tee /etc/wireguard/wg-server-publickey.key
  • Первая команда записывает исходное содержимое конфигурационного файла в /etc/wireguard/wg0.conf. Значение umask в суб-оболочке позволяет создать файл с ограниченными разрешениями, не затрагивая обычную среду.
  • Вторая команда генерирует закрытый ключ с помощью команды wg и записывает ее непосредственно в конфигурационный файл с ограниченным доступом. Затем ключ передается обратно команде wg pubkey, чтобы получить связанный с ним открытый ключ, который записывается в /etc/wireguard/wg-sever-publickey.key.

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

sudo nano /etc/sysctl.conf

И уберем знак комментария # со строки:

net.ipv4.ip_forward=1

Применим изменения

sudo sysctl -p

Далее отрываем файл на редактирования и вносим необходимую информацию о нашей VPN сети.

sudo nano /etc/wireguard/wg0.conf

Конфигурационный файл vpn wireguard

Внутри, в разделе [Interface], вы должны увидеть свой сгенерированный закрытый ключ. Этот раздел содержит конфигурацию для локальной стороны соединения.

В разделе Interface нужно также определить IP-адрес VPN, который будет использовать этот узел, и порт, который он будет прослушивать для соединений с одноранговыми узлами.

Давайте добавим в него следующие строки ListenPort, SaveConfig и Address:

[Interface]
PrivateKey = приватный_ключ_сервера
ListenPort = 5555
SaveConfig = true
Address = 10.0.0.1/24 
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE
  • ListenPort – указываем свободный порт который будет прослушивать наш сервис wg-quick (VPN WireGuard)
  • SaveConfig – имеет значение true, чтобы сервис wg-quick мог автоматически сохранять свою активную конфигурацию в этом файле при завершении работы.
  • Address – это наш IP-адрес и маска сети
  • PostUP и PostDown – запускают необходимые правило для iptables

Пробуем поднять нашу сеть скриптом wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

В системах с systemd вместо этого можно использовать следующую запись:

sudo systemctl start wg-quick@wg0.service

Если systemd ругается, то сперва необходимо включить сервис следующей командой:

sudo systemctl enable wg-quick@wg0.service

Настройка VPN WireGuard на клиентской машине

В качестве клиента у меня будет выступать ноутбук с операционной системой Ubuntu Desktop 18.04 LTS

Все действия выполняем из под пользователя root.

sudo su
add-apt-repository ppa:wireguard/wireguard 
apt install wireguard -y

Для Ubuntu 20.04 необходимо повторить тоже самое, что и при установке на серверную часть. (см. Выше)

Далее создаем конфигурационный файл и генерируем ключи:

(umask 077 && printf "[Interface]nPrivateKey = " | sudo tee /etc/wireguard/wg0.conf > /dev/null)
wg genkey | sudo tee -a /etc/wireguard/wg0.conf | wg pubkey | sudo tee /etc/wireguard/wg-server-publickey.key

Открываем наш конфигурационный файл и вносим изменения.

sudo nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = приватный_ключ_клиента
ListenPort = 5555
Address = 10.0.0.2/32 

Создайте раздел под названием [Peer] после раздела [Interface].

[Peer]
PublicKey = Публичный_ключ_сервера
AllowedIPs = 10.0.0.0/24
Endpoint = IP-адрес_сервера:5555
PersistentKeepalive = 10
  • PublicKey – укажите значение открытого ключа сервера. Вы можете найти это значение, набрав на сервере команду: wg
  • AllowedIPs – указывает на пропуск трафика через VPN. В данном случае будет проходить через VPN только трафик сети 10.0.0.0/24. Весть остальной трафик пойдет через вашего провайдер. Для заворота всего трафика через VPN указываем значение 0.0.0.0/0
  • PersistentKeepalive – время в секундах для постоянной проверки доступности ресурса.

Запускаем сервис на Ubuntu:

 sudo systemctl start wg-quick@wg0.service 

Запускаем сервис на Debian:

sudo wg-quick up /etc/wireguard/wg0.conf

Peer на стороне сервера

На сервере также необходимо добавить информацию о клиенте. Иначе ваш туннель VPN не откроется. Для этого возвращаемся на сервер и останавливаем службу wireguard:

sudo systemctl stop wg-quick@wg0.service

Далее открываем конфигурационный файл:

sudo nano /etc/wireguard/wg0.conf

И вносим информацию о клиенте.

[Peer]
PublicKey = публичный_ключ_клиента
AllowedIPs = 10.0.0.5/32
PersistentKeepalive = 10
  • PublicKey – ключ клиента можно посмотреть на клиентской машине при помощи команды wg.
  • AllowedIPs – указывает на IP клиента. Обязательно с маской 32

Запускаем наш сервис:

 sudo systemctl start wg-quick@wg0.service 

Пробуем пропинговать клиента.

ping 10.0.0.2
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.916 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.545 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.647 ms

Со стороны клиента также должен проходить пинг до сервера.

ping 10.0.0.1
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=2.40 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.646 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.555 ms

Хотя статья получилась большой, но все настраивается очень быстро.

Тонкая настройка параметров WireGuard на примере Proxmox

  • /usr/lib/sysctl.d/10-pve-ct-inotify-limits.conf
    fs.inotify.max_queued_events = 8388608
    fs.inotify.max_user_instances = 65536
    fs.inotify.max_user_watches = 4194304
    vm.max_map_count = 262144
    net.ipv4.neigh.default.gc_thresh3 = 8192
    net.ipv6.neigh.default.gc_thresh3 = 8192
    kernel.keys.maxkeys = 2000
  • /usr/lib/sysctl.d/10-pve.conf
    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0
    net.bridge.bridge-nf-filter-vlan-tagged = 0
    net.ipv4.igmp_link_local_mcast_reports = 0
    fs.aio-max-nr = 1048576
  • /usr/lib/sysctl.d/50-pid-max.conf
    kernel.pid_max = 4194304
  • /etc/sysctl.d/99-sysctl.conf
    net.ipv4.ip_forward = 1
  • /usr/lib/sysctl.d/protect-links.conf
    fs.protected_fifos = 1
    fs.protected_hardlinks = 1
    fs.protected_regular = 2
    fs.protected_symlinks = 1
  • /usr/lib/sysctl.d/pve-firewall.conf
    net.ipv4.conf.all.rp_filter = 2
  • /etc/sysctl.d/wg.conf
    net.ipv4.ip_forward = 1
    net.ipv6.conf.all.forwarding = 1
  • /etc/sysctl.conf
    net.ipv4.ip_forward = 1

Vim – что это за редактор. Vim – полный гайд по командам



























4/5 — (1 голос)

Vim – это легендарный текстовый редактор, способный на многое, но недружелюбный к новичкам. VIM — текстовый редактор, который появился в 1991 году, но до сих пор пользуется огромной популярностью (наряду с Emacs). Как правило, на него переходят после других редакторов уже состоявшиеся разработчики. Нередко, переходят с полноценных IDE.