Подстановочные знаки
Подстановочный знак совпадает с любой последовательностью из нуля или более символов. Ниже приведена измененная версия предыдущего запроса, в которой используется шаблон, содержащий знак процента.
Оператор указывает SQL, что необходимо сравнивать содержимое столбца с шаблоном «Smith% Corp.». Этому шаблону соответствуют все перечисленные ниже имена.
Smith Corp.
Smithsen Corp.
Smithson Corp.
Smithsonian Corp.
А вот эти имена данному шаблону не соответствуют.
SmithCorp
Smithson Inc.
Подстановочный знак (символ подчеркивания) совпадает с любым отдельным символом. Например, если вы уверены, что название компании либо «Smithson», либо «Smithsen», то можете воспользоваться следующим запросом.
В таком случае шаблону будет соответствовать любое из представленных ниже имен.
Smithson Corp.
Smithsen Corp.
Smithsun Corp.
А вот ни одно из следующих ему соответствовать не будет.
Smithsoon Corp.
Smithsn Corp.
Подстановочные знаки можно помещать в любое место строки шаблона, и в одной строке может содержаться несколько подстановочных знаков. Следующий запрос допускает как написание «Smithson» и «Smithsen», так и любое другое окончание названия компании, включая «Corp.», «Inc.» или какое-то другое.
С помощью формы можно находить строки, которые не соответствуют шаблону. Проверку можно применять только к столбцам, имеющим строковый тип данных. Если в столбце содержится значение , то результатом проверки будет .
Вероятно, вы уже встречались с проверкой на соответствие шаблону в операционных системах, имеющих интерфейс командной строки (таких, как Unix). Обычно в этих системах звездочка () используется для тех же целей, что и символ процента () в SQL, а вопросительный знак () соответствует символу подчеркивания () в SQL, но в целом возможности работы с шаблонами строк в них такие же.
Загрузить только определенные столбцы (и игнорировать другие) при загрузки из файла
В следующем примере мы имеем значения только для трех полей. У нас нет столбца department в этом примере файла.
# cat worker8.txt 100,Andreyex,5000 200,Boris,5500 300,Anna,7000 400,Anton,9500 500,Dima,6000
Для того, чтобы загрузить значения из входной записи на определенный столбец в таблице, укажите имена столбцов во время загрузки данных INFILE, как показано ниже. В последней строке в следующей команде есть имена столбцов, которые должны использоваться для загрузки записей из входного текстового файла.
LOAD DATA INFILE 'worker8.txt' INTO TABLE employee FIELDS TERMINATED BY ',' (id, name, salary);
Так как мы не указываем колонку “DEPT” в приведенной выше команде, мы увидим, что этот столбец NULL, как показано ниже.
MariaDB > select * from employee; +-----+--------+------+--------+ | id | name | dept | salary | +-----+--------+------+--------+ | 100 | Andreyex | NULL | 5000 | | 200 | Boris | NULL | 5500 | | 300 | Anna | NULL | 7000 | | 400 | Anton | NULL | 9500 | | 500 | Dima | NULL | 6000 | +-----+--------+------+--------+
Опять же, имейте в виду, что, когда вы не указываете список столбцов, то команда будет ожидать, что все столбцы должны присутствовать в файле ввода.
Кроме того, если вы не указали список столбцов в последней строке, вы получите ошибку синтаксиса, как показано ниже.
MariaDB > LOAD DATA INFILE 'worker7.txt' -> INTO TABLE employee (id, name, salary) -> FIELDS TERMINATED BY ','; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FIELDS TERMINATED BY ','' at line 3
Игнорировать строки заголовка при загрузки из файла
В следующем входном текстовом файле, первая строка является строкой заголовка, который имеет название столбцов.
# cat worker7.txt empid,name,department,salary 100,Andreyex,Sales,5000 200,Boris,IT,5500 300,Anna,IT,7000 400,Anton,Marketing,9500 500,Dima,IT,6000
Во время загрузки, мы хотим, игнорировать 1-й строку заголовка из файла worker7.txt. Для этого используйте опцию IGNORE 1, как показано ниже.
LOAD DATA INFILE 'worker7.txt' INTO TABLE employee FIELDS TERMINATED BY ',' IGNORE 1 LINES;
Как видно из следующих выходных данных, даже если входной файл имеет 6 строк, он игнорирует 1-ю линию (которая является строка заголовка) и загрузит оставшиеся 5 строк.
Query OK, 5 rows affected (0.00 sec) Records: 5 Deleted: 0 Skipped: 0 Warnings: 0 MariaDB > select * from employee; +-----+--------+------------+--------+ | id | name | dept | salary | +-----+--------+------------+--------+ | 100 | Andreyex | Sales | 5000 | | 200 | Boris | IT | 5500 | | 300 | Anna | IT | 7000 | | 400 | Anton | Marketing | 9500 | | 500 | Dima | IT | 6000 | +-----+--------+------------+--------+
Типы данных в MySQL
В следующей таблице приведены наиболее часто используемые типы данных, поддерживаемые MySQL.
INT | Хранит числовые значения в диапазоне от -2147483648 до 2147483647. |
DECIMAL | Хранит десятичные значения. |
CHAR | Хранит строки фиксированной длины с максимальным размером 255 символов. |
VARCHAR | Хранит строки переменной длины с максимальным размером 65 535 символов. |
TEXT | Хранит строки с максимальным размером 65 535 символов. |
DATE | Сохраняет значения даты в формате ГГГГ-ММ-ДД. |
DATETIME | Сохраняет объединенные значения даты/времени в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС. |
TIMESTAMP | Хранит значения меток времени. Значения TIMESTAMP хранятся в виде количества секунд с начала эпохи Unix (1970-01-01 00:00:01 UTC). |
Существует несколько дополнительных ограничений (также называемых модификаторами), которые установлены для столбцов таблицы в предыдущем выражении. Ограничения определяют правила, касающиеся значений, разрешенных в столбцах.
- Ограничение NOT NULL гарантирует, что поле не может принять значение NULL.
- Ограничение PRIMARY KEY помечает соответствующее поле как первичный ключ таблицы.
- Атрибут AUTO_INCREMENT является расширением MySQL для стандартного SQL, который сообщает MySQL, что нужно автоматически присваивать значение этому полю, если оно не указано, путем увеличения предыдущего значения на 1. Доступно только для числовых полей.
- Ограничение UNIQUE гарантирует, что каждая строка для столбца должна иметь уникальное значение.
Вы узнаете больше об ограничениях MySQL в следующих статьях.
блок 3
Подключение к MySQL через консоль
Получить информацию об установленной версии MySQL
Для подключения к mysql в консоли наберите команду
- h — хост c MySQL. Если подключаемся с локальной машины, параметр можно опустить
- u — имя пользователя MySQL (root или другой пользователь MySQL)
- p — пароль, который будет предложено ввести после нажатия enter
Приглашение командной строки изменится, это значит, сервер MySQL ждёт от вас команд.
Запросы должны оканчиваться точкой с запятой. Длинные запросы удобно разбивать enter-ом для перехода на новую строку, а после полного написания запроса поставить точку с запятой и выполнить его.
Для отключения от MySQL нужно написать exit или (в unix-системах) нажать комбинацию клавиш ctrl+с.
Для вывода всех баз данных на сервере используйте команду show databases.
Выберите нужную базу данных командой use.
Теперь можно вводить запросы.
Чтобы подключиться к MySQL и сразу выбрать нужную базу
Удаление таблицы в базе данных с помощью PHP (PDO)
<?php
$server = «localhost»;
$user = «root»;
$password = «MySafePass4!»;
$db_name = «Bookstore»;
try {
// Открываем соединение
$db = new PDO(«mysql:host=$server;dbname=$db_name», $user, $password);
// Создание исключения при ошибке
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Запрос на удаление таблицы
$sql = «DROP TABLE books»;
// Выполняем запрос
$db->exec($sql);
echo «Таблица успешно удалена!»;
}
catch(PDOException $e) {
echo «Ошибка при удалении таблицы в базе данных: » . $e->getMessage();
}
// Закрываем соединение
$db = null;
?>
1 |
<?php $server=»localhost»; $user=»root»; $password=»MySafePass4!»; $db_name=»Bookstore»; try{ // Открываем соединение $db=newPDO(«mysql:host=$server;dbname=$db_name»,$user,$password); // Создание исключения при ошибке $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // Запрос на удаление таблицы $sql=»DROP TABLE books»; // Выполняем запрос $db->exec($sql); echo»Таблица успешно удалена!»; } catch(PDOException$e){ echo»Ошибка при удалении таблицы в базе данных: «.$e->getMessage(); } // Закрываем соединение $db=null; ?> |
Бэкап отдельной таблицы или базы
Не всегда нужны архивные копии всего mysql сервера. Иногда достаточно отдельной базы данных или даже таблицы. Xtrabackup позволяет это сделать. Архивируем только одну базу данных sitemanager.
Для того, чтобы этот способ бэкапа отдельной базы mysql работал, необходим параметр innodb_file_per_table в настройка сервера баз данных.
# xtrabackup --backup --databases "sitemanager" --target-dir=/root/backupdb/sitemanager
Восстановление отдельной базы mysql будет выглядеть так.
# xtrabackup --prepare --databases "sitemanager" --target-dir=/root/backupdb/sitemanager # systemctl stop mysqld # mkdir -p /var/lib/mysql.old/sitemanager # mv /var/lib/mysql/sitemanager /var/lib/mysql.old # mv /root/backupdb/sitemanager/sitemanager /var/lib/mysql # chown -R mysql. /var/lib/mysql # systemctl start mysql
Мы по сути просто скопировали исходные файлы базы из бэкапа в рабочий каталог, предварительно сохранив предыдущую версию базы на всякий случай.
Теперь попробуем из полного бэкапа базы восстановить только одну таблицу. В моем примере я на работающем сервере сделаю восстановление существующей таблицы из полного бэкапа. Если будете восстанавливать на другой сервер, то перед этим вам нужно будет воссоздать исходную структуру таблицы перед тем, как будете восстанавливать данные по предложенному методу.
Готовим бэкап к восстановлению:
# xtrabackup --prepare --export --target-dir=/root/backupdb/full
Идем в консоль mysql и выбираем там таблицу для восстановления. В моем примере это будет таблица b_user_access из базы sitemanager. Смотрим, заполнена ли таблица данными.
mysql> SELECT COUNT(*) FROM sitemanager.b_user_access; +----------+ | COUNT(*) | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)
Делаем DISCARD этой таблицы.
mysql> ALTER TABLE sitemanager.b_user_access DISCARD TABLESPACE; Query OK, 0 rows affected (0.00 sec)
Discard означает, что будет удален ibd файл таблицы. Теперь нам его нужно скопировать из бэкапа и назначить права для mysql.
# cp /root/backupdb/full/sitemanager/b_user_access.* /var/lib/mysql/sitemanager # chown mysql. /var/lib/mysql/sitemanager/b_user_access.*
Возвращаемся в консоль mysql и импортируем данные.
mysql> ALTER TABLE sitemanager.b_user_access IMPORT TABLESPACE; Query OK, 0 rows affected (0.03 sec)
Смотрим, что получилось.
> SELECT COUNT(*) FROM sitemanager.b_user_access; +----------+ | COUNT(*) | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)
Данные восстановлены. Вернулись те же 6 строк, что и были до этого.
Установка Redis
Установка Redis в WSL (IE. Ubuntu):
- Откройте терминал WSL (Internet Explorer). Ubuntu).
- Обновите пакеты Ubuntu:
- После обновления пакетов установите Redis с помощью:
- Подтвердите установку и получите номер версии:
Чтобы начать работу с сервером Redis, выполните следующие действия.
Проверьте, работает ли Redis (Redis-CLI — служебная программа командной строки для взаимодействия с Redis): это должно вернуть ответ «теннис».
Чтобы прерывать работу сервера Redis, выполните следующие действия.
Дополнительные сведения о работе с базой данных Redis см. в документации по Redis.
для работы с базами данных Redis в VS Code попробуйте использовать расширение Redis.
Использование экранирующего символа в текстовых данных файла
Допустим, у вас запятая в значении той или иной области.
Например, в следующем примере, имя 2-го поля имеет значение в следующем формате: “Firstname, Lastname“.
# cat worker4.txt 100,Andreyex, Smith,Sales,5000 200,Boris, Bourne,IT,5500 300,Anna, Jones,IT,7000 400,Anton, Patel,Marketing,9500 500,Dima, Lee,IT,6000
Если вы загрузите вышеуказанный файл с помощью следующей команды, вы увидите, что он будет отображать “10 предупреждений”
MariaDB > LOAD DATA INFILE 'worker4.txt' -> INTO TABLE employee -> FIELDS TERMINATED BY ','; Query OK, 5 rows affected, 10 warnings (0.00 sec) Records: 5 Deleted: 0 Skipped: 0 Warnings: 10
Записи также не загружается должным образом, потому что есть запятая в значении одного из полей.
MariaDB > select * from employee; +-----+--------+---------+--------+ | id | name | dept | salary | +-----+--------+---------+--------+ | 100 | Andreyex | Smith | 0 | | 200 | Boris | Bourne | 0 | | 300 | Anna | Jones | 0 | | 400 | Anton | Patel | 0 | | 500 | Dima | Lee | 0 | +-----+--------+---------+--------+
Правильный файл: Для того, чтобы решить данную проблему, используйте обратную косую черту (\) перед запятой в значении имени поля, как показано ниже.
# cat worker4.txt 100,Andreyex\, Smith,Sales,5000 200,Boris\, Bourne,IT,5500 300,Anna\, Jones,IT,7000 400,Anton\, Patel,Marketing,9500 500,Dima\, Lee,IT,6000
Ниже будет работать на этот раз без каких-либо ошибок, так как мы указали \ в качестве экранирующего символа.
MariaDB > LOAD DATA INFILE 'worker4.txt' -> INTO TABLE employee -> FIELDS TERMINATED BY ','; MariaDB > select * from employee; +-----+---------------+------------+--------+ | id | name | dept | salary | +-----+---------------+------------+--------+ | 100 | Andreyex, Smith | Sales | 5000 | | 200 | Boris, Bourne | IT | 5500 | | 300 | Anna, Jones | IT | 7000 | | 400 | Anton, Patel | Marketing | 9500 | | 500 | Dima, Lee | IT | 6000 | +-----+---------------+------------+--------+
Вы можете также использовать экранирующий символ, как показано ниже. В этом примере мы используем ^ вместо стандартного \.
# cat worker41.txt 100,Andreyex^, Smith,Sales,5000 200,Boris^, Bourne,IT,5500 300,Anna^, Jones,IT,7000 400,Anton^, Patel,Marketing,9500 500,Dima^, Lee,IT,6000
В этом случае используйте вариант “ESCAPED BY“, как показано ниже.
LOAD DATA INFILE 'worker41.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ESCAPED BY '\^'
Обратите внимание, что некоторые символы не могут быть использованы в качестве экранирующего символа. Например, если вы используете % в качестве экранирующего символа, вы получите следующее сообщение об ошибке
LOAD DATA INFILE 'worker41.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ESCAPED BY '\%' ERROR 1083 (42000): Field separator argument is not what is expected; check the manual
Создание таблицы SQL
Новые таблицы добавляются в существующую базу данных с помощью оператора CREATE TABLE SQL. За оператором CREATE TABLE следует имя создаваемой таблицы, а далее через запятые список имен и определений каждого столбца таблицы:
CREATE TABLE имя_таблицы ( определение имени_столбца, определение имени_таблицы …, PRIMARY KEY= (имя_столбца) ) ENGINE= тип_движка;
В определении столбца задается тип данных, может ли столбец быть NULL, AUTO_INCREMENT. Оператор CREATE TABLE также позволяет указать столбец (или группу столбцов) в качестве первичного ключа. Прежде чем будет создавать таблицу, нужно выбрать базу данных. Это делается с помощью оператора SQL USE:
USE MySampleDB;
Создадим таблицу, состоящую из трех столбцов: customer_id, customer_name и customer_address. Столбцы customer_id и customer_name не должны быть пустыми (то есть NOT NULL). customer_id содержит целочисленное значение, которое будет автоматически увеличиваться при добавлении новых строк. Остальные столбцы будут содержать строки длиной до 20 символов. Первичный ключ определяется как customer_id.
CREATE TABLE customer ( customer_id int NOT NULL AUTO_INCREMENT, customer_name char(20) NOT NULL, customer_address char(20) NULL, PRIMARY KEY (customer_id) ) ENGINE=InnoDB;
7.4. Как сделать импорт или экспорт базы данных через SSH? Работа с БД по SSH
Для импорта сначала загружаете дамп на сервер. Дамп должен быть в формате .sql
Далее подключаетесь на сервер по ssh и выполняете команду:
mysql -u пользователь_БД -p имя_БД < файл_дампа_БД
В случае неудачи всегда будет указанна ошибка из за которой импорт не удался или прервался.
Для экспорта существует утилита, которая позволяет сделать бэкап базы данных в традиционном SQL-формате – mysqldump. Общий вид в командной строке:
mysqldump –u пользователь_БД -p имя-БД > файл_дампа_БД
Также утилита имеет много опций и ключей, рассмотрим несколько основных полезных примеров по использованию mysqldump.
mysqldump -–all-databases -uUSER -pPASSWORD > /path/mysql-db-server.sql
Команда с опцией -–all-databases сохраняет все базы данных пользователя USER на MySQL-сервере.
mysql -uUSER -pPASSWORD < /path/mysql-db-server.sql
Восстанавливает все БД mysql пользователя USER. Если USER — root — то все БД.
mysqldump -uUSER -pPASSWORD DATABASE table1 table2 table3 > /path/ DATABASE_t1-t2-t3.sql
Сохраняет таблицы table1, table2, table3, из базы DATABASE в файле DATABASE_t1-t2-t3.sql.
mysqldump —no-data -uUSER -pPASSWORD DATABASE > /path/DATABASE-schema.sql
Указав опцию —no-data команда сохранит структуру таблиц (без данных) в файле DATABASE_schema.sql.
mysqldump —add-drop-table -uUSER -pPASSWORD DATABASE > /path/DATABASE.sql
Опция —add-drop-table добавит команду DROP TABLE (удаление таблицы) перед созданием таблиц.
mysqldump —databases -uUSER -pPASSWORD DATABASE > /path/DATABASE.sql
Опция —databases добавит команду CREATE DATABASE перед созданием базы данных. Это позволяет не создавать и не задавать базу данных при восстановлении.
mysqldump -uUSER –pPASSWORD –h192.168.0.1 DATABASE > /path/DATABASE.sql
Команда сделает бэкап базы DATABASE с сервера с ip-адресом 192.168.0.1
mysqldump —max_allowed_packet=8M -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql
Опция —max_allowed_packet=8M принудительно изменит размер пакета считываемых данных в оперативную память размером в 8 мегабайт.
mysqldump —quick -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql
Опция —quick заставляет команду записывать данные непосредственно на диск.
mysqldump —default-character-set=cp1251 -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql
Принудительно указываем кодировку cp1251.
mysqldump -uUSER –pPASSWORD DATABASE | gzip -c /path/DATABASE.sql.gz
Этой последовательностью получаем архивированный бэкап с помощью утилиты gzip (для последующего восстановления необходимо будет предварительно извлечь из архива).
Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE
Для просмотра списка баз данных можно использовать команду:
mysqlshow -u USER -pPASSWORD
А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE
где:
USER — это имя пользователя базы данных;
PASSWORD — пароль пользователя;
SERVER — это имя (или ip-адрес) сервера базы данных;
DataBase — наименование базы данных;
NameFile.sql — имя файла, в который будет помещен дамп базы данных.
Первичные ключи
Первичный ключ — это столбец, используемый для идентификации записей в таблице. Значение столбца первичного ключа должно быть уникальным. Если несколько столбцов объединены в первичный ключ, то комбинация значений ключей должна быть уникальной для каждой строки.
Первичный ключ определяется с помощью оператора PRIMARY KEY во время создания таблицы. Если используется несколько столбцов, они разделяются запятой:
PRIMARY KEY (имя_столбца, имя_столбца ... )
В следующем примере создается таблица с использованием двух столбцов в качестве первичного ключа:
CREATE TABLE product ( prod_code INT NOT NULL AUTO_INCREMENT, prod_name char(30) NOT NULL, prod_desc char(60) NULL, PRIMARY KEY (prod_code, prod_name) ) ENGINE=InnoDB;
Выгрузка данных с помощью опции “Lines terminated by”
Вместо того, чтобы все записи были указанны на отдельной строке, вы также можете указать их на той же строке.
В следующем примере, каждая запись отделена символом |.
# cat worker5.txt 100,Andreyex,Sales,5000|200,Boris,IT,5500|300,Anna,IT,7000|400,Anton,Marketing,9500|500,Dima,IT,6000
Чтобы загрузить вышеуказанный файл, используйте вариант, как показано ниже.
LOAD DATA INFILE 'worker5.txt' INTO TABLE employee FIELDS TERMINATED BY ',' LINES TERMINATED BY '|';
Приведенная выше команда будет загружать записи из worker5.txt, как показано ниже.
MariaDB > select * from employee; +-----+--------+------------+--------+ | id | name | dept | salary | +-----+--------+------------+--------+ | 100 | Andreyex | Sales | 5000 | | 200 | Boris | IT | 5500 | | 300 | Anna | IT | 7000 | | 400 | Anton | Marketing | 9500 | | 500 | Dima | IT | 6000 | +-----+--------+------------+--------+
Ниже приведены несколько моментов, чтобы иметь в виду:
- Если входной файл поступает из окна, то вы можете использовать эту функцию: LINES TERMINATED BY ‘\r\n’
- Если вы используете CSV файл для загрузки данных в таблицу, то попробуйте одну из этих: 1) LINES TERMINATED BY ‘\r’ 2) LINES TERMINATED BY ‘\r\n’
Создание резервной копии в Windows
Создать файл резервной копии базы данных в Windows можно несколькими способами. В приведенных ниже инструкциях используется SQL Server Management Studio (SSMS).
-
Запустите SQL Server Management Studio на компьютере Windows.
-
В диалоговом окне подключения введите localhost.
-
В обозревателе объектов разверните узел Базы данных.
-
Щелкните целевую базу данных правой кнопкой мыши, выберите пункт Задачи, а затем Резервное копирование….
-
В диалоговом окне Резервное копирование базы данных в поле Тип резервной копии должно быть выбрано значение Полная, а в поле Создать резервную копию на — Диск. Запишите имя и расположение файла. Например, база данных с именем YourDB в SQL Server 2016 имеет путь резервного копирования по умолчанию .
-
Нажмите кнопку ОК, чтобы создать резервную копию базы данных.
Примечание
Другой вариант — выполнить запрос Transact-SQL для создания файла резервной копии. Следующая команда Transact-SQL выполняет те же действия, что и предыдущие инструкции, для базы данных с именем YourDB:
Параметры командной строки SSH
Давайте рассмотрим некоторые параметры, доступные с помощью команды ssh.
ssh -C
Используйте опцию -C с ssh для запроса сжатия всех данных, полученных или переданных с удаленного сервера. Синтаксис команды ниже
например
ssh -v
Параметр -v используется с командой ssh для отладки ssh-клиента. Ниже приведен синтаксис:
например:
Для отладки ssh-клиента используйте параметр -v
ssh -b
Опция -b используется для привязки IP-адреса к SSH-соединению. IP — адрес будет использоваться в качестве исходного адреса SSH-соединения. Это применяется, когда у клиента более двух IP-адресов, и вы можете не знать, какой IP-адрес используется для создания соединения с сервером SSH.
Например:
Команда свяжет IP-адрес с удаленным сервером. Мы можем проверить это, используя команду для проверки соединения.
Привязка IP-адреса к SSH-соединению
ssh -F
Параметр -F используется вместе с командой ssh для указания конфигурации для каждого пользователя. Файл конфигурации по умолчанию ~/. ssh/config.
Чтобы использовать определенный файл конфигурации, используйте параметр -F следующим образом.
Например:
ssh -L
Опция -L используется для переадресации локальных портов. Переадресация локальных портов позволяет нам перенаправлять трафик с нашего хоста в порт назначения через прокси-сервер.
Основной синтаксис для переадресации локальных портов такой.
Например выполните следующую команду для подключения к удаленному хосту на порт 3306, пользователя kali с IP 192.168.239.134 с локального хоста 192.168.239.133 на порту 3336.
Переадресация локальных портов SSH
ssh -R
Опция -R используется вместе с командой SSH для включения удаленной переадресации портов. Это означает, что вы можете перенаправить порт на удаленном сервере на порт локального компьютера, который затем будет перенаправлен на порт конечного компьютера.
Основной синтаксис для переадресации удаленных портов следующий.
Например:
Команда заставит ssh прослушивать ssh-сервер порт 3336 и перенаправлять весь трафик на порт 3000.
Синтаксис для переадресации удаленных портов SSH
ssh -C -D
Опция -D включает динамическую переадресацию портов. Обычный порт SOCKS-1001, однако можно использовать любой номер порта; тем не менее, некоторые программы будут работать только на порту 1001.
Основной синтаксис динамической пересылки выглядит следующим образом.
Например
Параметр -D указывает динамическую переадресацию портов на 1001 порт, а опция -C включает сжатие.
Динамическая переадресация портов SSH
ssh -X
Опция -X используется вместе с ssh для пересылки X11. Ниже приведен синтаксис для пересылки X11.
Используйте следующую команду, чтобы включить переадресацию X11 для пользователя kali с IP-адресом 192.168.239.134.
SSH -Y
Параметр -Y используется вместе с ssh для доверенной переадресации X11. Это означает, что удаленный X11 будет иметь полный доступ к исходному дисплею X11.
Используйте следующую команду, чтобы включить доверенную переадресацию. X11 для пользователя kali с IP-адресом 192.168.239.134.
Параметр -Y для доверенной переадресации X11 SSH
ssh -o
Параметр -o можно использовать с другими параметрами.
Например:
Если вы используете ssh -o «batchmode=yes», команда успешно выполнится на удаленной машине, если включено подключение без пароля, в противном случае команда вернет ошибку.
ssh -o «batchmode=yes»
Некоторые из наиболее важных параметров командной строки показаны в следующей таблице.
SSH Параметр (опция) | Описание |
-А | Позволяет перенаправлять соединение агента аутентификации. |
-а | Этот параметр отключает перенаправляемое соединение агента аутентификации. |
-b | Параметр используется для привязки адресов источников. |
-С | Этот параметр используется для сжатия данных. |
-c cipher_spec | Параметр выбирает спецификацию шифра для шифрования сеанса. |
-d | Эта опция отвечает за динамическую переадресацию портов на уровне приложений. |
-E log_file | Параметр добавляет журналы отладки в файл log_file вместо стандартной ошибки. |
-F config file | Этот параметр указывает файл конфигурации для каждого пользователя. |
-g | Эта опция позволяет удаленным хостам подключаться к локальным перенаправленным портам. |
-i identity_file | Опция считывает закрытый ключ для аутентификации с открытым ключом. |
-j | Параметр определяет директиву конфигурации ProxyJump. |
-l login_name | В этом параметре указывается пользователь для входа на удаленный компьютер. |
-p port | Параметр используется для указания порта для подключения к удаленному хосту. |
-q | Это тихий режим. |
-V | Подробный режим. |
-Х | Параметр позволяет переадресовать X11 |
-Y | Эта опция обеспечивает надежную переадресацию X11 |
AUTO_INCREMENT
Когда столбец определяется с помощью AUTO_INCREMENT, его значение автоматически увеличивается каждый раз, когда в таблицу добавляется новая запись. Это удобно при использовании столбца в качестве первичного ключа. Благодаря AUTO_INCREMENTне нужно писать инструкции SQL для вычисления уникального идентификатора для каждой строки.
AUTO_INCREMENT может быть присвоен только одному столбцу в таблице. И он должен быть проиндексирован (например, объявлен в качестве первичного ключа).
Значение AUTO_INCREMENT для столбца можно переопределить, указав новое при выполнении инструкции INSERT.
Можно запросить у MySQL самое последнее значение AUTO_INCREMENT, используя функцию last_insert_id() следующим образом:
SELECT last_insert_value();
См. раздел службы запуск и настройка псевдонимов профилей.
Чтобы просмотреть службы, которые в настоящее время выполняются в дистрибутиве WSL, введите:
Вводить или и может быть утомительно. Однако, вы можете рассмотреть возможность установки псевдонимов в файле на WSL, чтобы сделать эти команды более быстрыми в использовании и легкими в запоминании.
Настройка собственного пользовательского псевдонима или ярлыка для выполнения этих команд:
-
Откройте терминал WSL и введите , чтобы убедиться, что вы находитесь в корневом каталоге.
-
Откройте файл , управляющий настройками терминала, в текстовом редакторе терминала Nano: .
-
В нижней части файла (не меняйте настройки ) добавьте следующее:
Это позволит вам ввести для запуска службы postgresql и — для открытия оболочки psql. Вы можете изменить и на любые имена, просто следите за тем, чтобы не перезаписать команду, которую postgres уже использует!
-
После добавления новых псевдонимов выйдите из текстового редактора Nano, используя Ctrl+X — выберите (Да) при запросе сохранения и Enter (имя файла останется ).
-
Закройте и снова откройте терминал WSL, а затем попробуйте использовать свои новые команды ввода псевдонима.
Подключение к СУБД
Если мы планируем работать в командной строке, заходим в среду управления MySQL.
а) В Linux вводим команду:
mysql -uroot -p
* где root — пользователь, под которым мы будем подключаться к оболочке; ключ -p потребует ввода пароля.
б) В Windows запускаем командную строку — в меню пуск или найдя ее в поиске. Переходим в каталог, с установленной СУБД и запускаем одноименную команду mysql, например:
cd «%ProgramFiles%\MySQL\MySQL Server 5.5\bin\»
* в данном примере предполагается, что у нас установлена MySQL версии 5.5.
mysql -u root -p
* здесь, как и в Linux, идет подключение к mysql/mariadb под учетной записью root с запросом пароля.
Дальнейшие шаги
В этом руководстве вы узнали, как создать резервную копию базы данных в Windows и переместить ее на сервер Linux с SQL Server. Вы ознакомились с выполнением следующих задач:
- создание файла резервной копии в Windows с помощью SSMS и Transact-SQL;
- установка оболочки Bash в Windows;
- перенос файлов резервных копий из Windows в Linux с помощью команды scp;
- удаленное подключение к компьютеру Linux с помощью команды ssh;
- перемещение файла резервной копии для подготовки к восстановлению;
- выполнение команд Transact-SQL с помощью sqlcmd;
- восстановление резервной копии базы данных с помощью команды RESTORE DATABASE;
- выполнение запроса для проверки переноса.
Далее вы можете ознакомиться с другими сценариями переноса для SQL Server на Linux.
Вывод данных из таблицы MySQL с помощью PHP (PDO)
Иногда вывод большого количества данных в терминале может быть неудобен или даже не читаем, в таком случае будет лучше вывести данные таблицы на веб-странице с помощью PHP, используя модуль PDO.
Создадим файл c HTML-таблицей, ячейки которой будут заполнятся данными из таблицы books.
<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>SELECT</title>
<style>
td:nth-child(5),td:nth-child(6){text-align:center;}
table{border-spacing: 0;border-collapse: collapse;}
td, th{padding: 10px;border: 1px solid black;}
</style>
</head>
<body>
<?php
$db_server = «localhost»;
$db_user = «root»;
$db_password = «MySafePass4!»;
$db_name = «Bookstore»;
try {
// Открываем соединение, указываем адрес сервера, имя бд, имя пользователя и пароль,
// также сообщаем серверу в какой кодировке должны вводится данные в таблицу бд.
$db = new PDO(«mysql:host=$db_server;dbname=$db_name», $db_user, $db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>»SET NAMES utf8″));
// Устанавливаем атрибут сообщений об ошибках (выбрасывать исключения)
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Запрос на вывод записей из таблицы
$sql = «SELECT id, title, author, price, discount, amount FROM books»;
// Подготовка запроса
$statement = $db->prepare($sql);
// Выполняем запрос
$statement->execute();
// Получаем массив строк
$result_array = $statement->fetchAll();
echo «<table><tr><th>ID</th><th>Title</th><th>Author</th><th>Price</th><th>Discount</th><th>Amount</th></tr>»;
foreach ($result_array as $result_row) {
echo «<tr>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «</tr>»;
}
echo «</table>»;
}
catch(PDOException $e) {
echo «Ошибка при создании записи в базе данных: » . $e->getMessage();
}
// Закрываем соединение
$db = null;
?>
</body>
</html>
1 |
<!DOCTYPE html> <html> <head> <meta charset=»UTF-8″> <title>SELECT<title> <style> td:nth-child(5),td:nth-child(6){text-aligncenter;} table{border-spacing;border-collapsecollapse;} td, th{padding10px;border1pxsolidblack;} </style> <head> <body> <?php $db_server=»localhost»; $db_user=»root»; $db_password=»MySafePass4!»; $db_name=»Bookstore»; try{ // Открываем соединение, указываем адрес сервера, имя бд, имя пользователя и пароль, // также сообщаем серверу в какой кодировке должны вводится данные в таблицу бд. $db=newPDO(«mysql:host=$db_server;dbname=$db_name»,$db_user,$db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>»SET NAMES utf8″)); // Устанавливаем атрибут сообщений об ошибках (выбрасывать исключения) $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // Запрос на вывод записей из таблицы $sql=»SELECT id, title, author, price, discount, amount FROM books»; // Подготовка запроса $statement=$db->prepare($sql); // Выполняем запрос $statement->execute(); // Получаем массив строк $result_array=$statement->fetchAll(); echo»<table><tr><th>ID</th><th>Title</th><th>Author</th><th>Price</th><th>Discount</th><th>Amount</th></tr>»; foreach($result_arrayas$result_row){ echo»<tr>»; echo»<td>».$result_row»id».»</td>»; echo»<td>».$result_row»title».»</td>»; echo»<td>».$result_row»author».»</td>»; echo»<td>».$result_row»price».»</td>»; echo»<td>».$result_row»discount».»</td>»; echo»<td>».$result_row»amount».»</td>»; echo»</tr>»; } echo»</table>»; } catch(PDOException$e){ echo»Ошибка при создании записи в базе данных: «.$e->getMessage(); } // Закрываем соединение $db=null; ?> <body> <html> |
Результат заполнения HTML-таблицы данными из таблицы books.
Результат вывода данных из таблицы MySQL при помощи PHP