Работа с процессами в linux

Начало работы с MySQL

Введение

MySQL — это популярный сервер баз данных, используемый в разных приложениях. SQL означает язык структурированных запросов — (S)tructured (Q)uery (L)anguage, который MySQL использует для коммуникации с другими программами. Сверх того, MySQL имеет свои собственные расширенные функции SQL для того чтобы обеспечить пользователям дополнительный функционал. В этом документе мы рассмотрим как провести первоначальную установку MySQL, настроить базы данных и таблицы, и создать новых пользователей. Давайте начнем с установки.

Установка MySQL

Сначала убедитесь что MySQL установлен на вашу систему. В случае если вам требуется определенная функциональность MySQL, убедитесь, что установлены необходимые USE-флаги, так как они помогут в тонкой настройке инсталляции.

По завершении установки, вы увидите следующее уведомление:

Код Сообщение einfo MySQL

You might want to run:
"emerge --config =dev-db/mysql-"
if this is a new install.

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

 * MySQL DATADIR is /var/lib/mysql
 * Press ENTER to create the mysql database and set proper
 * permissions on it, or Control-C to abort now...
 
   Preparing db table
   Preparing host table
   Preparing user table
   Preparing func table
   Preparing tables_priv table
   Preparing columns_priv table
   Installing all prepared tables
 
   To start mysqld at boot time you have to copy support-files/mysql.server
   to the right place for your system
 
   PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
   To do so, issue the following commands to start the server
   and change the applicable passwords:
 
   /etc/init.d/mysql start
   /usr/bin/mysqladmin -u root -h pegasos password 'new-password'
   /usr/bin/mysqladmin -u root password 'new-password'
   Depending on your configuration, a -p option may be needed
   in the last command. See the manual for more details.

ЗаметкаЕсли предыдущая команда не выполнится из-за того, что имя хоста установлено в localhost, измените его на другое имя, например gentoo. Обновите файл /etc/conf.d/hostname и перезапустите /etc/init.d/hostname.

Некоторая нехарактерная для ebuild-файлов информация MySQL удалена отсюда, чтобы содержать этот документ настолько последовательным, насколько возможно.

ВажноНачиная с mysql-4.0.24-r2, пароли вводятся во время этапа конфигурации, что делает пароль root более надежным.

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

Если вы используете OpenRC, выполните данную команду:

 * Re-caching dependency info (mtimes differ)...
 * Starting mysqld (/etc/mysql/my.cnf) ...        

Если вы используете systemd, вместо этого используйте следующую команду:

После этого установите пароль root:

Теперь вы можете проверить, что пароль root был успешно настроен, попытавшись войти на MySQL-сервер:

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.25
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql>

Параметр указывает пользователя, который будет выполнять вход. Параметр указывает хост. Обычно это будет , если только вы не настраиваете удаленный сервер. И, наконец, сообщает клиенту mysql что вы будете вводить пароль для доступа к базе данных

Обратите внимание на приглашение. Это то место, где вы будете вводить все ваши команды

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

ВажноУстановка mysql по умолчанию приемлема для систем разработки. Для более безопасных значений по умолчанию можно запустить /usr/bin/mysql_secure_installation

Файлы и директории

<box 100% left round|>
cd /home — перейти в директорию ‘/home’ cd .. — перейти в директорию уровнем вышеcd ../.. — перейти в директорию двумя уровнями вышеcd — перейти в домашнюю директорию~user — перейти в домашнюю директорию пользователя usercd — — перейти в директорию, в которой находились до перехода в текущую директориюpwd — показать текущюю директориюls — отобразить содержимое текущей директорииls -F — отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих типls -l — показать детализированое представление файлов и директорий в текущей директорииls -a — показать скрытые файлы и директории в текущей директорииls ** — показать файлы и директории содержащие в имени цифрыtree или lstree — показать дерево файлов и директорий, начиная от корня (/)mkdir dir1 — создать директорию с именем ‘dir1’mkdir dir1 dir2 — создать две директории одновременноmkdir -p /tmp/dir1/dir2 — создать дерево директорийrm -f file1 — удалить файл с именем ‘file1’rmdir dir1 — удалить директорию с именем ‘dir1’rm -rf dir1 — удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимоеrm -rf dir1 dir2 — удалить две директории и рекурсивно их содержимоеmv dir1 new_dir — переименовать или переместить файл или директориюcp file1 file2 — сопировать файл file1 в файл file2cp dir/* . — копировать все файлы директории dir в текущую директориюcp -a /tmp/dir1 . — копировать директорию dir1 со всем содержимым в текущую директориюcp -a dir1 dir2 — копировать директорию dir1 в директорию dir2ln -s file1 lnk1* — создать символическую ссылку на файл или директориюln file1 lnk1 — создать «жёсткую» (физическую) ссылку на файл или директориюtouch -t 0712250000 fileditest — модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

</box>

За

  • Разделение логики с другими приложениями. Хранимые процедуры инкапсулируют функциональность; это обеспечивает связность доступа к данным и управления ими между различными приложениями.
  • Изоляция пользователей от таблиц базы данных. Это позволяет давать доступ к хранимым процедурам, но не к самим данным таблиц.
  • Обеспечивает механизм защиты. В соответствии с предыдущим пунктом, если вы можете получить доступ к данным только через хранимые процедуры, никто другой не сможет стереть ваши данные через команду SQL DELETE.
  • Улучшение выполнения как следствие сокращения сетевого трафика. С помощью хранимых процедур множество запросов могут быть объединены.

Специальные атрибуты файлов

<box 100% round left |>
chattr +a file1 — позволить открывать файл на запись только в режиме добавленияchattr +c file1 — позволяет ядру автоматически сжимать/разжимать содержимое файла.chattr +d file1 — указавет утилите dump игнорировать данный файл во время выполнения backup’аchattr +i file1 — делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.chattr +s file1 — позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных.chattr +S file1 — указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды syncchattr +u file1 — данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановитьlsattr — показать атрибуты файлов

</box>

procfs

procfs — виртуальная файловая система, используемая в Unix-подобных операционных системах. Позволяет получить доступ к информации из ядра о системных процессах. Обычно её монтируют на /proc. procfs создает двухуровневое представление пространств процессов. На верхнем уровне процессы представляют собой директории, именованные в соответствии с их pid. Также на верхнем уровне располагается ссылка на директорию, соответствующую процессу, выполняющему запрос; она может иметь различное имя в различных ОС (curproc во FreeBSD, self в Linux).

GNU-версия утилиты ps читает всю информацию о процессах из /proc, не делая каких-то специальных системных вызовов.

На Linux из procfs можно получить такую информацию о каждом процессе (перечислим отдельные пункты):

  • /proc/PID/cmdline — командная строка, использованная при запуске процесса.
  • /proc/PID/cwd — симлинк на текущий рабочий каталог процесса.
  • /proc/PID/environ содержит имена и значения переменных окружения.
  • /proc/PID/exe — симлинк на оригинальный исполняемый файл.
  • /proc/PID/fd — каталог, содержащий симлинки на все открытые файловые дескрипторы.
  • /proc/PID/maps — текстовый файл, описывающий адресное пространство (куча, стек, заммапленные файлы).
  • /proc/PID/status содержит базовую информацию о процессе, включая текущий статус и потребление памяти.

Кроме того, есть общая информация, не привязанная к отдельным PID.

  • /proc/cpuinfo — модель, тактовая частота процессора.
  • /proc/meminfo — сведения об использовании памяти.
  • /proc/uptime — время с момента загрузки ядра и время в простое (idle time), в секундах.

И многое другое.

Практически весь контент генерируется ядром на лету при чтении «файлов», поэтому их размер может отображаться как равный нулю. Данные не хранятся на диске (в файловой системе ext2/3/4 и пр.). Программа stat отображает для этих «файлов» всегда свежайшее время модификации.

Сеть

ping # Пинг. Пропинговать ya.ru и вывести результат: ping ya.ru ;ifconfig # Утилита настройки сети. Примеры:- ifconfig # Показать параметры всех активных сетевых интерфейсов;- ifconfig -a # Показать все сетевые интерфейсы;- ifconfig eth0 up # Запустить сетевой интерфейс eth0;- ifconfig eth0 down # Отключить сетевой интерфейс eth0;- ifconfig eth0 hw ether 00:01:02:03:04:05 # Смена MAC адреса;- ifconfig eth0 192.168.1.1 netmask 255.255.255.0 # Выставить интерфейсу eth0 IP-адрес и маску подсети;

ifconfig eth0:0 192.168.0.1 netmask 255.255.255.0 # Задать дополнительный IP адрес сетевому интерфейсу eth0;iwlist scan # просканировать эфир на предмет, доступности беспроводных точек доступа;iwconfig # Утилита настройки беспроводных сетевых интерфейсов.- iwconfig wlan0 # Показать конфигурацию беспроводного сетевого интерфейса wlan0;- iwconfig wlan0 mode ad-hoc # Указываем тип сети — ad-hoc;- iwconfig wlan0 channel 2 # Указываем частотный канал;- iwconfig wlan0 essid inet # Указываем имя сети. Подробнее о настройке раздачи интернета по wi-fi здесь: iwconfig ;route # Настройка маршрутов. Примеры:- route -n # Выводит на экран таблицу маршрутизации;- route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 # добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с IP-адресом 192.168.1.1 (для удаления меняем add на del);netstat # Текущие сетевые соединения. Пример:

— netstat -tup # Отобразить активные сетевые соединения:  ;

netstat -an | grep LISTEN # Показывает список всех открытых портов;- netstat -anp -udp -tcp | grep LISTEN # Посмотреть список приложений, которые открывают порты;ethtool # Информация о текущем режиме сетевого соединения и поддерживаемых. Примеры:

— ethtool eth0 отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения;- ethtool -s eth0 speed 100 duplex full autoneg off # Принудительно задать скорость сетевому интерфейсу 100Mbit и режим Full duplex и отключить автоматическое определение;tcpdump # Утилита сканирования сетевого трафика. Пример: tcpdump tcp port 80 отобразить весь трафик на TCP-порт 80;iptables # Утилита настройки файервола;ssh # Подключение к удаленному компьютеру по ssh. Пример: ssh 10.10.10.4 . Подробнее: ssh ;wget # Утилита закачки. wget -c http://www.example.com/file.iso загрузить файл http://www.example.com/file.iso с возможностью останова и продолжения в последствии;

whois # Узнать информацию о домене, пример: whois linux-bash.ru ;

Запуск фонового процесса в Linux

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

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

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

Вы также можете отправить процесс в фоновый режим, приостановив его с помощью сочетания клавиш Ctrl+Z. Данное сочетание клавиш отправит процессу сигнал , тем самым переведя его в режим ожидания:

Чтобы продолжить выполнение вышеупомянутой приостановленной команды в фоновом режиме, используйте команду bg (от англ. «begin»):

Чтобы отправить фоновый процесс на передний план, используйте команду fg (от англ. «foreground») вместе с идентификатором задания следующим образом:

Подключение к серверу MySQL с помощью MySQL Workbench

После установки пакета MySQL-Workbench у Вас в меню Mint появился пункт «Программирование», в котором есть программа «MySQL Workbench». Для подключения к серверу MySQL запускаем данную программу.

После запуска в MySQL Workbench у нас уже будет по умолчанию настроено локальное подключение от имени пользователя root, но работать от имени этого пользователя крайне не рекомендуется. Поэтому мы только сейчас подключимся от имени root, создадим БД и пользователя, а потом уже будем подключаться от имени созданного нами пользователя. Сейчас я сразу покажу Вам, как можно создавать новое подключение, для этого нажимаем на иконку плюсик «+».

Вводим необходимые параметры (имя подключения, хост, порт, учетную запись), я указываю их на примере пользователя root (для проверки доступа можете нажать на кнопку «Test Connection») и нажимаем «OK».

После этого щелкаем на созданное подключение.

Система спросит пароль, мы вводим пароль и жмем «OK». После чего мы подключимся к серверу MySQL.

Создание базы данных и таблицы в MySQL, а также вставка данных в таблицу

Теперь давайте для примера создадим базу данных с названием TestBase. Для этого пишем инструкцию CREATE DATABASE.

А потом давайте создадим таблицу TestTable и вставим в нее одну строку (предварительно перейдя в нужную БД).

   
        #Создание базы данных
        CREATE DATABASE TestBase;
        #Подключаемся к нужной базе данных
        USE TestBase;
        #Создаем таблицу
        CREATE TABLE TestTable (id INT, comment VARCHAR (100));
        #Вставляем данные в таблицу
        INSERT INTO TestTable (id, comment) VALUES (1, 'Текст');
        #Осуществляем выборку данных
        SELECT * FROM TestTable

Создание пользователя в MySQL

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

   
        #Создаем пользователя
        CREATE USER 'TestUser'@'%' IDENTIFIED BY 'Pa$$w0rd';
        #Назначаем права
        GRANT ALL PRIVILEGES ON TestBase.* TO 'TestUser'@'%';
        #Применяем изменения
        FLUSH PRIVILEGES;

Где,

  • TestUser – это имя учетной записи, Вы указываете свою;
  • % — это означает, что пользователь может подключаться с любого хоста, в случае если Вы хотите, чтобы пользователь подключался только с локального компьютера, то вместо этого символа можете указать localhost;
  • Pa$$w0rd – это пароль от учетной записи (Вы указываете свой придуманный пароль);
  • ALL PRIVILEGES – означает, что мы даем пользователю полные права, в случае необходимости Вы можете указать только нужную привилегию;
  • TestBase.* — означает, что права мы даем только на определенную базу данных, в нашем случае TestBase. Для того чтобы дать права на все БД напишите *.*;
  • FLUSH PRIVILEGES – сохраняем все изменения, которые мы внесли.

Использование RAID в виртуальной машине Azure

Хранилище — ключевой фактор, влияющий на производительность базы данных в облачных средах. По сравнению с одним диском, RAID может обеспечить более быстрый доступ за счет параллелизма. Дополнительные сведения см. в статье о стандартных уровнях RAID.

С помощью RAID можно существенно увеличить пропускную способность ввода-вывода диска и улучшить время ответа операций ввода-вывода в Azure. Наши лабораторные тесты показали, что при удвоении количества дисков RAID (с 2 до 4, с 4 до 8 и т. д.) удваивается пропускная способность ввода-вывода дисков, а время ответа операций ввода-вывода уменьшается в среднем в два раза. Дополнительные сведения см. в .

Помимо дисковых операций ввода-вывода производительность MySQL увеличивается при увеличении уровня RAID. Дополнительные сведения см. в .

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

Тем не менее, если размер блока слишком большой, это может привести к дополнительной нагрузке, и вы не сможете воспользоваться преимуществами RAID. Текущий размер блоков по умолчанию — 512 КБ. Он является оптимальным для большинства рабочих сред. Дополнительные сведения см. в .

Обратите внимание, что для виртуальных машин разных типов существуют ограничения на количество дисков, которые можно добавить. Эти ограничения описаны в статье Размеры виртуальных машин и облачных служб для Azure

Чтобы выполнить пример RAID в этой статье, вам понадобится 4 подключенных диска данных, хотя вы можете настроить RAID и с меньшим количеством дисков.

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

Настройка RAID в Azure

Ниже объясняется, как создать RAID в Azure с помощью классического портала Azure. RAID также можно настроить с помощью сценариев Windows PowerShell. В этом примере мы настроим RAID 0 с 4 дисками.

Шаг 1. Добавление диска данных в виртуальную машину

На странице «Виртуальные машины» классического портала Azure щелкните виртуальную машину, в которую требуется добавить диск данных. В этом примере виртуальная машина — mysqlnode1.

На странице виртуальной машины щелкните Панель мониторинга.

На панели задач щелкните Подключить.

Затем щелкните Присоединить пустой диск.

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

Это позволит добавить один пустой диск в виртуальную машину. Повторите этот шаг еще три раза, чтобы настроить 4 диска данных для RAID.

Добавленные диски можно просмотреть в виртуальной машине, открыв журнал сообщений ядра. Например, чтобы просмотреть этот журнал в Ubuntu, используйте следующую команду:

Copy

Шаг 2. Создание RAID с дополнительными дисками

Чтобы просмотреть подробные шаги по настройке RAID, перейдите к этой статье:

Примечание

Если вы используете файловую систему XFS, после создания RAID выполните следующие действия.

Чтобы установить файловую систему XFS в ОС Debian, Ubuntu или Linux Mint, используйте следующую команду:

Copy

Чтобы установить файловую систему XFS в ОС Fedora, CentOS или RHEL, используйте следующую команду:

Copy

Copy

Copy

Copy

Управление содержимым файлов

ВЯ часто использую команду. Он показывает содержимое, хранящееся внутри файла, в красивом интерактивном интерфейсе.

Использование:.

Как только вы окажетесь внутрисеанс, вы можете выйти, нажав.

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

Вы можете искать содержимое внутри файла, нажави введите слово для поиска. Этот поисквперед. Вы можете искать в обратном направлении, используясимвол и ввод слова.

Эта команда просто визуализирует содержимое файла. Вы можете напрямую открыть редактор, нажав. Он будет использовать системный редактор, который в большинстве случаев.

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

Вы можете открывать несколько файлов и перемещаться по ним с помощью(перейти к следующему файлу) и(перейти к предыдущему).

Я только что упомянулв предыдущей команде, поэтому давайте воспользуемся этой возможностью, чтобы объяснить, что она делает.

На мой взгляд, его лучший вариант использования — это вызов свариант. Он открывает файл в конце и следит за изменениями файла. Каждый раз, когда в файле появляется новое содержимое, оно печатается в окне. Это отлично подходит для просмотра файлов журналов, например:

Для выхода нажмите.

Вы можете распечатать последние 10 строк файла:

Вы можете распечатать все содержимое файла, начиная с определенной строки, используяперед номером строки:

может сделать гораздо больше, и, как всегда, мой совет — проверить.

Похожий накаким-то образом у нас есть. Крометакже может добавлять содержимое в файл, что делает его очень мощным.

В простейшем использованиивыводит содержимое файла на стандартный вывод:

Вы можете распечатать содержимое нескольких файлов:

и используя оператор перенаправления выводавы можете объединить содержимое нескольких файлов в новый файл:

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

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

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

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

средстваколичество слов. Вот наиболее частое использование:

  • подсчитывать строки
  • подсчитывать слова
  • подсчитывать символы
  • подсчет символов с многобайтовой поддержкой (т.е. смайлики считаются как 1, а не как несколько символов)

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

ВКоманда может использоваться для поиска файлов или папок, соответствующих определенному шаблону поиска. Ищет рекурсивно.

Давайте узнаем это на примере.

Найдите все файлы в текущем дереве срасширение и выведите относительный путь каждого файла, соответствующего запросу:

Важно использовать кавычки вокруг специальных символов, напримерчтобы оболочка не интерпретировала их. Найдите каталоги под текущим деревом, соответствующие имени «src»:

Найдите каталоги под текущим деревом, соответствующие имени «src»:

Использоватьдля поиска только файлов, илидля поиска только символьных ссылок.

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

Вы можете искать по нескольким корневым деревьям:

Найдите каталоги в текущем дереве, соответствующие имени «node_modules» или «public»:

Вы также можете исключить путь, используя:

Вы можете искать файлы, содержащие более 100 символов (байтов):

Искать файлы размером более 100 КБ, но меньше 1 МБ:

Искать файлы, отредактированные более 3 дней назад

Искать файлы, отредактированные за последние 24 часа

Вы можете удалить все файлы, соответствующие поисковому запросу, добавиввариант. Это удалит все файлы, отредактированные за последние 24 часа:

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

обратите внимание на прекращение.заполняется именем файла во время выполнения. Скачать мою бесплатнуюСправочник по командам Linux

Скачать мою бесплатнуюСправочник по командам Linux

Другие полезные команды

<box 100% round left |>
apropos …keyword — выводит список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните командуman ping — вызов руководства по работе с программой, в данном случае, — pingwhatis …keyword — отображает описание действий указанной программыmkbootdisk –device /dev/fd0 `uname -r` — создаёт загрузочный флоппи-дискgpg -c file1 — шифрует файл file1 с помощью GNU Privacy Guardgpg file1.gpg — дешифрует файл file1 с помощью GNU Privacy Guardwget -r http://www.example.com — загружает рекурсивно содержимое сайта http://www.example.comwget -c http://www.example.com/file.iso — загрузить файл http://www.example.com/file.iso с возможностью останова и продолжения в последствииecho ‘wget -c http://www.example.com/files.iso’ | at 09:00 — начать закачку в указанное времяldd /usr/bin/ssh — вывести список библиотек, необходимых для работы sshalias hh=’history’ — назначить алиас hh команде history

</box>

Настройка прав доступа

Чтобы к созданной базе можно было подключиться, добавим пользователя:

> GRANT ALL PRIVILEGES ON newdb.* TO dbuser@localhost IDENTIFIED BY ‘password’ WITH GRANT OPTION;

* где newdb.* — наша база и все ее таблицы; dbuser@localhost — имя учетной записи, которая будет подключаться с локального сервера; password — придуманный нами пароль.** В данном примере, учетной записи будут предоставлены полные права (ALL PRIVILEGES). Подробнее о правах в MySQL читайте статью Как создать пользователя MySQL и дать ему права.

Посмотреть список пользователей, которые имеют доступ к базе можно командой:

> SELECT db, host, user FROM mysql.db WHERE db=’newdb’;

* в данном примере мы выведем учетные записи, которым был дан прямой доступ к созданной нами базе. В данном списке не будут отражены пользователи с глобальными правами (например, root).

Поменять пароль пользователю можно одной из команд (в зависимости от версии СУБД):

> SET PASSWORD FOR ‘dbuser’@’localhost’ = PASSWORD(‘new_password’);

> ALTER USER ‘dbuser’@’localhost’ IDENTIFIED BY ‘new_password’;

> UPDATE mysql.user SET Password=PASSWORD(‘new_password’) WHERE USER=’dbuser’ AND Host=’localhost’;

* все 3 команды меняют пароль для пользователя dbuser@localhost на новый — new_password.

При необходимости, удалить пользователя можно командами:

> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ‘dbuser’@’localhost’;

> DROP USER ‘dbuser’@’localhost’;

* первая команда отнимает все привилегии, выданные пользователю. Вторая удаляет самого пользователя.

Установка MySQL

1. Установите инструменты компиляции и файлы библиотеки.  

2. Установите компилятор cmake

Версия cmake: cmake-3.1.1.

1. Адрес загрузки:http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz

$ wget http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz

2. Разархивируйте установочный пакет.

$ tar zxvf cmake-3.1.1.tar.gz

3. Войдите в каталог установочного пакета.

$ cd cmake-3.1.1

4. Скомпилируйте и установите

$ ./bootstrap $ make && make install

В-третьих, установите MySQL

Версия MySQL: mysql-5.6.15.

1. Адрес загрузки:http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz

Я скачиваю путь к установочному пакету: / usr / local (сильно влияет на будущие пути конфигурации)

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz

2. Разархивируйте установочный пакет.

$ tar zxvf mysql-5.6.15.tar.gz

3. Войдите в каталог установочного пакета.

$ cd mysql-5.6.15

4. Скомпилируйте и установите

5. Проверьте версию mysql:

$ /usr/local/webserver/mysql/bin/mysql —version

Подключение к СУБД

Если мы планируем работать в командной строке, заходим в среду управления 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 с запросом пароля.

Шаг 2: Как работать с хранимыми процедурами

Создание хранимой процедуры

DELIMITER //  
  
CREATE PROCEDURE `p2` ()  
LANGUAGE SQL  
DETERMINISTIC  
SQL SECURITY DEFINER  
COMMENT 'A procedure'  
BEGIN  
    SELECT 'Hello World !';  
END//  

Первая часть кода создает хранимую процедуру. Следующая — содержит необязательные параметры. Затем идет название и, наконец, тело самой процедуры.

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

4 характеристики хранимой процедуры:

  • Language: в целях обеспечения переносимости, по умолчанию указан SQL.
  • Deterministic: если процедура все время возвращает один и тот же результат, и принимает одни и те же входящие параметры. Это для репликации и процесса регистрации. Значение по умолчанию — NOT DETERMINISTIC.
  • SQL Security: во время вызова идет проверка прав пользователя. INVOKER — это пользователь, вызывающий хранимую процедуру. DEFINER — это “создатель” процедуры. Значение по умолчанию — DEFINER.
  • Comment: в целях документирования, значение по умолчанию — «»

Вызов хранимой процедуры

Чтобы вызвать хранимую процедуру, необходимо напечатать ключевое слово CALL, а затем название процедуры, а в скобках указать параметры (переменные или значения). Скобки обязательны.

CALL stored_procedure_name (param1, param2, ....)  
  
CALL procedure1(10 , 'string parameter' , @parameter_var);

Изменение хранимой процедуры

В MySQL есть выражение ALTER PROCEDURE для изменения процедур, но оно подходит для изменения лишь некоторых характеристик. Если вам нужно изменить параметры или тело процедуры, вам следует удалить и создать ее заново.

Удаление хранимой процедуры

DROP PROCEDURE IF EXISTS p2; 

Это простая команда. Выражение IF EXISTS отлавливает ошибку в случае, если такой процедуры не существует.

Клиент подключается к серверу

Сообщалось об ошибке при использовании Navicat для подключения к mysql, и хосту не было разрешено подключиться к серверу.

1. Подключитесь к MySQL

$ /usr/local/webserver/mysql/bin/mysql -u root -p

2. Установите информацию о подключении.

Пользователь: mysql Используйте пароль: mypassword для подключения к серверу mysql с любого хоста

GRANT ALL PRIVILEGES ON *.* TO ‘mysql’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

Если вы хотите разрешить пользователю myuser подключаться к серверу mysql с хоста, чей ip равен 192.168.2.3, и использовать mypassword в качестве пароля

GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’192.168.2.3’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

Прочие команды

  • Старт: запуск службы mysqld
  • Стоп: остановка службы mysqld
  • Перезагрузка: перезапуск службы mysqld
  • Конфигурация перезагрузки: перезагрузка службы mysqld
  • Просмотреть процесс ps -elf | grep mysqld

Современные альтернативы init

Сейчас существует множество систем, призванных заменить собой классический init.

Главный недостаток традиционного init — он запускал процессы последовательно, ожидая завершения предыдущего перед запуском следующего. Поэтому были разработаны альтернативные решения:

  • launchd (в Mac OS X)
  • Upstart (первоначально разрабатывалась в Ubuntu, ныне устарела)
  • systemd (используется в современных Debian, Ubuntu, Fedora, …; критикуется за отход от Unix-философии и сложность)

На Ubuntu 16.04:

$ sudo readlink -f /proc/1/exe
/lib/systemd/systemd

Классический файл /etc/inittab вообще отсутствует.

Способы запуска и остановки сервисов

Классический UNIX System V init:

$ sudo /etc/init.d/nginx start
$ sudo /etc/init.d/nginx stop

Upstart:

$ sudo start nginx
$ sudo stop nginx

systemd:

$ sudo systemctl start nginx
$ sudo systemctl stop nginx

Универсальный:

$ sudo service nginx start
$ sudo service nginx stop

Свой простейший демон на systemd

Добавляется конфиг /etc/systemd/system/foo.system:

Unit
Description=foo
 
Service
WorkingDirectory=/home/
ExecStart=/usr/bin/env python -m SimpleHTTPServer
 
Install
WantedBy=multi-user.target

Затем установка и запуск:

$ sudo systemctl enable foo
$ sudo systemctl start foo

Сортировка вывода по столбцам

Вы можете отсортировать вывод, используя опцию —sort. Давайте отсортируем вывод по столбцу CPU:

ps -e -o pcpu,pmem,args --sort -pcpu | less

Дефис «-» означает сортировку от большего к меньшему.

Чтобы увидеть десять самых ресурсоемких процессов, передайте вывод через команду head:

ps -e -o pcpu,args,args --sort -pcpu | head -10

Мы получаем отсортированный, усечённый список.

Если мы добавим больше столбцов для вывода, мы сможем отсортировать по большему количеству столбцов.

Без дефиса или со знаком «+» сортировка выполняется от меньшего к большему.

Добавим в сортировку столбец pmem:

ps -e -o pcpu,pmem,args --sort -pcpu,pmem

Сортировка по-прежнему выполняется по значению pcpu, но если для каких-то записей эти значения одинаковые, то выполняется сортировка по pmem для этих значений.

Давайте сделаем вывод результатов немного более полезным и добавим столбец идентификатора процесса (pid), чтобы мы могли видеть номер процесса каждого процесса в нашем листинге.

ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10

Теперь мы можем идентифицировать процессы.

Заключение

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

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: