ZEROLAB
Мне часто друзья задают те или иные вопросы по администрированию и я подумал, почему бы вместо того, чтобы объяснять по 100 раз одно и то же, не писать такие статьи-заметки на сайте? К тому же, это прекрасная возможность в случае чего самому воспользоваться такой заметкой, ведь Вы сами знаете, удержать в голове порой всё не возможно и так или иначе иногда приходится обращаться к настольной книге, так пусть такой книгой станет один из разделов этого сайта. Сегодня мы поговорим о том, как работать с СУБД MySQL из командной строки, да, кто-то скажет — «Накой? Ведь есть phpMyAdmin», отвечаю — зачем тратить драгоценные ресурсы сервера, устанавливая всякую дрянь по типу WebMin, phpMyAdmin и т.п., если всё тоже самое легко можно проделать надёжными, проверенными средствами. Настройка из терминала по SSH-туннелю — наш выбор!
Что ж, приступим. Соединяемся с сервером по SSH, к примеру через всеми известный PuTTY (A Free Telnet/SSH Client). Теперь перейдём непосредственно к описанию команд.
Вход на сервер MySQL программой mysql:
mysql -u root -h localhost -p
Параметр -u указывает пользователя, который будет входить в систему. Параметр -h указывает узел сети. Обычно это localhost, если вы настраиваете не удаленный сервер. Наконец, -p сообщает программе-клиенту mysql, что для доступа к базе данных будет вводиться пароль. Обратите внимание на приглашение mysql>. Именно здесь вы будете вводить все свои команды. Теперь, находясь в среде mysql в качестве корневого пользователя, мы можем начать настройку базы данных.
Мы вошли, и на экране — приглашение mysql. Сначала взглянем на список уже имеющихся баз данных. Для этого введем команду SHOW DATABASES.
SHOW DATABASES;
Запомните, что команды MySQL следует заканчивать точкой с запятой — ;
Базы данных создаются командой CREATE DATABASE. Мы назовем свою test.
CREATE DATABASE test;
Ответ дает понять, что команда выполнена без каких-либо ошибок. В данном случае, изменилась одна строка. Это относится к главной базе данных mysql, в которой содержится список всех баз данных. Но вам не нужно слишком беспокоиться о второстепенных подробностях. Последнее число означает время выполнения запроса. Убедиться, что база данных создана, мы можем, снова запустив команду SHOW DATABASES.
Чтобы заняться созданием таблиц в новой базе данных test, нам потребуется установить ее как текущую. Для этого используем команду USE. Параметром этой команды указывается название базы данных, которую нужно сделать текущей. Еще текущую базу можно устанавливать в командной строке, указывая ее название после параметра -D. Давайте продолжим и переключимся на базу данных test. Переключение базы данных:
USE test;
Привилегии в MySQL
Предоставление привилегий командой GRANT. Привилегиями определяются возможности доступа пользователей к базам данных, таблицам… почти ко всему. Сейчас только суперпользователь root из MySQL может обращаться к базе данных test, согласно данным разрешениям. Давайте создадим ещё одного пользователя, например, admin (администратор), который будет обращаться к базе данных test и работать с информацией из нее. Но прежде, чем начать, давайте взглянем на несколько упрощенный формат команды GRANT.
GRANT [привилегии] ON база_данных.* TO '[пользователь]'@'[узел]' IDENTIFIED BY '[пароль]';
Примечание: Команда GRANT считается способом создания пользователя. Поздние версии MySQL, однако, также содержат функцию CREATE_USER, хотя GRANT до сих пор предпочтительнее. Теперь нужны привилегии, которые можно присваивать. Используя все вышесказанное, можно устанавливать следующие привилегии:
ALL - дается полный доступ ко всей базе данных CREATE - пользователям позволяется создавать таблицы SELECT - пользователям позволяется делать запросы к таблицам INSERT - пользователям позволяется вставлять данные в таблицу SHOW DATABASES - разрешается выводить список баз данных USAGE - у пользователя нет привилегий GRANT OPTION - пользователям разрешается давать привилегии
Примечание: Если вы используете MySQL для обмена данными с веб-приложением, то разъясняемые здесь привилегии CREATE, SELECT, INSERT, а также привилегии DELETE и UPDATE (описанные в руководстве по MySQL, раздел GRANT and REVOKE Syntax (англ.)) — единственные, которые, вероятно, потребуются. Многие совершают ошибку, раздавая все привилегии, когда это, в действительности, не нужно. Сверьтесь с разработчиками приложений, действительно ли такие разрешения создадут проблемы в работе.
Создание пользователя admin:
GRANT CREATE,SELECT,INSERT,DELETE,UPDATE ON test.* TO 'admin'@'localhost' IDENTIFIED BY 'пароль';
Итак, пользователи созданы; теперь протестируем их. Сначала выйдем из mysql, написав quit в строке приглашения:
quit
Теперь мы снова в консоли. Пользователи настроены, давайте посмотрим, что они могут делать. Попробуйте выполнить несколько запросов к своим БД и посмотрите результат.
Удаление прав пользователя командой REVOKE.
Команда REVOKE позволяет запретить доступ пользователю. Можно либо запретить любой доступ, либо только определенный. В самом деле, формат очень похож на GRANT. Синтаксис REVOKE:
REVOKE [привилегии] ON база_данных.* FROM '[пользователь]'@'[узел]';
Параметры объясняются в разделе команды GRANT. А сейчас мы запретим пользователю любой вид доступа. Скажем, мы выяснили, что учетная запись admin вызывает проблемы с безопасностью. Мы решаем отозвать все права. Заходим как root делаем необходимое. Отзыв разрешений для пользователя admin:
REVOKE ALL ON test.* FROM 'admin'@'localhost';
Примечание: В данном случае, доступ пользователя прост, поэтому отмена прав на одну базу данных — не проблема. Но обычно вам, скорее всего, потребуется использовать *.* вместо test.*, чтобы заодно отменить доступ пользователя ко всем остальным базам данных.
Теперь взглянем, как полностью удалить учетную запись командой DELETE, и посмотрим на таблицу пользователей MySQL.
Удаление учетных записей командой DELETE. Таблица пользователей MySQL — это список пользователей и информации о них. Убедитесь, что вы зашли как root. Используйте основную базу данных MySQL.
Использование основной базы mysql:
USE mysql;
Посмотрим, какие в базе mysql существуют таблицы:
SHOW TABLES;
Таблица user — та, что нужна. В ней 30 различных полей, и ее сложно читать. Для облегчения чтения используем третью форму команды SELECT. Искомые поля — Host (узел) и User (пользователь). Нахождение пользователя admin в таблице user:
SELECT Host,User FROM user WHERE User = 'admin';
Теперь, получив информацию, мы можем избавиться от пользователя admin. Это делается командой DELETE; вот ее синтаксис:
DELETE FROM имя_таблицы WHERE поле='значение';
Вы могли заметить, что формат DELETE чем-то схож с форматом SELECT. Укажем поле User и значение admin. Это удалит запись из таблицы user, где пользователь — admin, удаляя нашу учетную запись. Сделаем так: Удаление пользователя admin:
DELETE FROM user WHERE User='admin'; FLUSH PRIVILEGES;
Команда FLUSH PRIVILEGES нужна, чтобы обновить разрешения.
На сегодня всё. Согласитесь, всё просто! 😉
Как установить и настроить MySQL в Ubuntu 20.04
MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер. Создание облачного сервера Создать облачный сервер с операционной системой Ubuntu 20.04 можно в Облачной платформе Selectel. Откройте панель управления, перейдите в раздел Серверы и нажмите Создать сервер. В качестве […]
Эта инструкция — часть курса «MySQL для новичков».
Смотреть весь курс

MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер.
Создание облачного сервера
Создать облачный сервер с операционной системой Ubuntu 20.04 можно в Облачной платформе Selectel.
Откройте панель управления, перейдите в раздел Серверы и нажмите Создать сервер.

В качестве источника выберите в списке Ubuntu 20.04.

Сконфигурировать сервер можно любым образом, подробнее о настройках в Базе знаний.
Чтобы в дальнейшем можно было подключиться к серверу извне, создайте плавающий IP-адрес. Для этого в выпадающем списке Сеть выберите Плавающий IP-адрес.

Подготовка системы
Перед установкой MySQL сервер нужно подготовить: подключиться к нему по SSH и настроить брандмауэр с помощью UFW.
Подключение по SSH
Для подключения по SSH в терминале локальной машины введите:
ssh root@server_ip
IP-адрес сервера находится на вкладке Порты на странице сервера.
Пароль для root-пользователя, который требуется при аутентификации, можно найти на вкладке Консоль.
Настройка брандмауэра в Ubuntu
После подключения настройте брандмауэр так, чтобы он разрешал подключения к серверу по SSH.
Обновите индекс пакетов:
sudo apt update
Установите утилиту UFW для настройки брандмауэра:
sudo apt install ufw
Проверьте список профилей UFW:
sudo ufw app list
В списке должен быть указан OpenSSH:
Available applications: OpenSSH
Разрешите подключения по SSH:
sudo ufw allow OpenSSH
sudo ufw enable
Убедитесь, что брандмауэр активен, и включены профили OpenSSH:
sudo ufw status
Вывод будет выглядеть так:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Теперь можно переходить к установке и настройке MySQL на облачном сервере.
Установка MySQL
Установить MySQL на Ubuntu 20.04 можно через пакет:
sudo apt install mysql-server
На момент публикации инструкции по умолчанию ставится версия 8.0.23.
Вы можете проверить установленную версию:
mysql --version
Начальная настройка MySQL
Запустите скрипт для повышения безопасности MySQL:
sudo mysql_secure_installation
Система запросит разрешение на установку плагина валидации паролей. Этот плагин проверяет безопасность пароля и позволяет пользователю ставить только достаточно защищенные пароли.
Если вы хотите установить этот плагин, введите в консоли y или Y.
Есть три уровня защищенности пароля: LOW (0), MEDIUM (1) и STRONG (2). Чтобы задать уровень пароля, нажмите соответствующую цифру, например, 2 для сильного пароля. Даже если вы на предыдущем шаге не установили плагин, система запросит вас поставить пароль для пользователя root — введите его два раза.
Если плагин установлен, будет показан уровень надёжности пароля Estimated strength of the password.
Далее система задаст ряд вопросов: хотите ли вы использовать этот пароль для продолжения работы, удалить ли всех анонимных пользователей, запретить удаленно подключаться как root, удалить тестовую БД и доступ к ней, перезагрузить таблицы с привилегиями. Вы можете ответить на все эти вопросы положительно: y, Y или Enter.
Если в выводе появится All done!, то пароль для root успешно настроен.
По умолчанию вход в MySQL в Ubuntu не будет происходить по паролю. Чтобы настроить подключение через пароль, следуйте инструкции ниже.
Настройка аутентификации и управление пользователями
Аутентификация по паролю
Для root-пользователя аутентификация в MySQL происходит с использованием плагина auth_socket. Чтобы при подключении запрашивался пароль, нужно изменить плагин.
Войдите в оболочку MySQL:
sudo mysql
Посмотрите, какой плагин используется:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Для пользователя root используется auth_socket:

Назначьте пользователю root новый плагин caching_sha2_password. Также установите пароль того уровня надежности, который вы задали ранее (на шаге Базовая настройка MySQL) — это может быть, например, тот же самый пароль. Введите его вместо password:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Некоторые приложения для работы с MySQL (например, phpMyAdmin) не будут надежно работать с плагином caching_sha2_password. В таком случае лучше установить другой плагин — mysql_native_password.
mysql> FLUSH PRIVILEGES;
Проверьте, что для пользователя root плагин изменился на caching_sha2_password:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Закройте командную строку MySQL:
mysql> exit
Дополнительный пользователь (опционально)
Вы можете создать дополнительного пользователя для работы с MySQL.
Если вы установили аутентификацию по паролю, изменилась команда для подключения к консоли MySQL:
mysql -u root -p
Если у вас не установлена аутентификация по паролю, то для входа в MySQL используйте:
sudo mysql
Создайте нового пользователя и поставьте пароль:
mysql> CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
Если вы хотите дать пользователю полный доступ к определенной базе данных, используйте:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'new_user'@'localhost';
Закройте консоль MySQL:
mysql> exit
Тестирование MySQL
Посмотрите статус MySQL:
systemctl status mysql
В выводе должен быть индикатор зеленого цвета и статус active:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-03-22 09:57:07 UTC; 2h 39min ago Main PID: 2630 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1107) Memory: 331.4M CGroup: /system.slice/mysql.service └─2630 /usr/sbin/mysqld
По какой-то причине сервис может быть не активен. В таком случае запуск MySQL в Ubuntu происходит через команду:
sudo systemctl start mysql
Если вы хотите дополнительно проверить работу MySQL, используйте инструмент mysqladmin — он нужен для администрирования MySQL-сервера. Подключитесь к MySQL и запросите пароль от root:
sudo mysqladmin version -u root -p
Если вывод выглядит подобным образом, то MySQL успешно установлена и готова к использованию:
mysqladmin Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 8.0.23-0ubuntu0.20.04.1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 2 hours 47 min 34 sec Threads: 2 Questions: 28 Slow queries: 0 Opens: 141 Flush tables: 3 Open tables: 60 Queries per second avg: 0.002
Удаление MySQL
Если по какой-то причине вам нужно удалить MySQL из Ubuntu 20.04, сначала остановите сервисы:
sudo systemctl stop mysql
Удалите пакеты MySQL:
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
Удалите всех пользователей:
sudo deluser --remove-home mysql
sudo delgroup mysql
Удалите файлы базы данных, конфигурационные файлы и логи:
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
Удалите оставшиеся зависимости:
sudo apt-get autoremove
sudo apt-get autoclean
Как установить MySQL на Windows
Создание базы данных в MySQL
Зарегистрируйтесь в панели управления
И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.
On-line журнал o Linux
Будем считать что все у нас уже установлено и теперь приступаем непосредственно к работе.
Подключаемся:
ceval@srv:~$ mysql -pПАРОЛЬ
-p, —password=[password] — Пароль пользователя, для соединения с сервером MySQL. Не должно быть пробела между -p и паролем.
-u, —user=[user]— Имя пользователя для соединения с сервером MySQL. Необязательно, по умолчанию используется такое же, как ваш логин.Используеться если логин отличается от имени пользователя для соединения с сервером MySQL.
$ mysql -u ceval_ -pПАРОЛЬ
Если мы ввели свой пароль правильно, то увидим такие строки и приглашения:
Welcome to the MySQL monitor. Commands end with ; or \g.
Server version: 5.0.45-Debian
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>
Создаем нужную нам базу, с кодировкой cp1251, указанную кодировку можно заменить на требуемую:
CREATE DATABASE db_name DEFAULT CHARACTER SET cp1251 DEFAULT COLLATE cp1251_general_ci;
Удаления базы:
DROP DATABASE db_name;
Смена базы
USE `mydatabase`;
Удаления таблицы из базы
DROP TABLE `db_table`;
Еще немного:
->\g show databases; // смотрим какие базы есть
->\g create database sputnik; // создаем новую базу
->\g show databases; // проверяем создалась ли она
->\q // Выходим
В разных версиях MySQL могут быть разные команды (4 и 5) в данном случае \g — дает команду серверу выполниьт скрипт SQL
Загрузка, сохранение базы данных MySQL (backup, restore) работа с mysql ubuntu
Загрузить базу сохраненными данными (если делалось сохранение данных). Они сохранены например в файле baza.sql
mysql
->\g show databases;
->\u baza;
->\. /home/backup/baza.sql
->\q
/home/backup/baza.sql — путь к файлу бекапа
[b]Сохранить базу с данными в файл baza.sql[/b]
mysqldump baza > /home/backup/baza.sql;
База хранится: /var/lib/mysql/baza — для удаления всей базы данных достаточно удалить данный каталог.
Можно осуществлять различными способами:
— подключиться по ssh и работать через командную строку;
— использовать phpmyadmin;
— использовать пакет mysql-admin — это графическая утилита администрирования MySQL (GUI tool for intuitive MySQL administration
MySQL)
Теперь устанавливаем себе пакет mysql-admin на машину
sudo aptitude install mysql-admin
Дальше идем на удаленную машину и правим конфиг [b]my.cnf[/b]
$ sudo nano /etc/mysql/my.cnf
Для начало можно проверить:
$ netstat -an | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
Как видно из вывода пока MySQL слушает на localhoste, а нам нужно, чтобы MySQL слушал на всех интерфейсах, а не только на localhost, поэтому находим и редактируем такую запись:
[. ]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
[. ]
и что б MySQL слушал на всех интерфейсах, закомментируем эту строчку:
[. ]
[. ]
Рестанем MySQL:
$ sudo /etc/init.d/mysql restart
И посмотрем снова вывод команды:
$ netstat -an | grep 3306
Вывод должен выглядеть следующим образом:
и теперь можно запускать mysql-admin для удаленной работы с MySQL — Alt+F2 — mysql-admin
или
$ mysql-admin
работа с mysql ubuntu
- Часто используемые команды для MySQL.
- Proxy-сервер SQUID web-интерфейс для администрирования SAMS SAMS+REJIK с аунтентификацией по NTLM
- FTP сервер на базе vsftpd и MySQL в Debian (Ubuntu)
- Настройка прокси-сервера Squid +sams+ncsa на Ubuntu 10.04
- PhpMyAdmin исполнилось 15 лет
Командная строка MySQL
MySQL – это одна из востребованных систем управления базами данных (СУБД). База данных предназначена для хранения массивов данных в структурированном виде. Для работы с данными используется язык программирования SQL (Structured Query Language, в переводе – структурированный язык запросов).
MySQL – не единственная система управления базами данных. Также широко используются MariaDB, PostgreSQL, Microsoft SQL Server, SQLite и продукты от Percona. На серверах LITE.HOST используется сервер базы данных MariaDB 10.3, который является аналогом MySQL 5.7. Обратите внимание, что поменять версию СУБД на хостинге нельзя, для этого нужно использовать наши виртуальные серверы на базе операционной системы Linux.
Подключение к базе данных
Для работы с MySQL необходимо специализированное программное обеспечение. На хостинге LITE.HOST используется phpMyAdmin – панель, позволяющая выполнять любые действия с базой данных без знания SQL. Также управлять базами данных можно и по SSH через командную строку.
Рассмотрим выполнение базовых команд языка SQL из консоли сервера (их также можно выполнять через phpMyAdmin во вкладке «SQL»). Для того, чтобы запустить командную строку MySQL, войдите по SSH и воспользуйтесь командой mysql . В аргументе -u передайте имя пользователя от нужной базы данных (в нашем случае это root) и введите пароль.
[~]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 32227 Server version: 5.7.38 MySQL Community Server (GPL) Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Построение описанных дальше запросов полезно знать разработчикам и тестировщикам, либо просто для расширения своего кругозора. Обычным пользователям удобнее работать с базами данных через phpMyAdmin, данная система сама выполняет построение запросов и выводит информацию в удобном виде.
Просмотр списка баз данных
Для просмотра доступных баз данных пользователю, используйте команду SHOW .
Обратите внимание, при работе с MySQL после каждой команды обязательно ставится точка с запятой ; .
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
В нашем случае на сервере только системные базы данных, поэтому создадим новую базу test для хранения в ней своих данных.
Создание базы данных
Для создания базы данных необходимо воспользоваться командой CREATE DATABASE . Обратите внимание, что на виртуальном хостинге создание баз данных должно производиться только через панель управления хостингом.
mysql> CREATE DATABASE test; Query OK, 1 row affected (0.01 sec)
Далее, с помощью SHOW DATABASES можете убедиться, что новая база данных создана
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | +--------------------+ 5 rows in set (0.00 sec)
Выбор базы данных
Для выбора базы данных используйте USE , если это не сделать, то в командах SELECT , UPDATE , INSERT и DELETE нужно будет всегда указывать название базы данных, что неудобно.
mysql> USE test; Database changed
Просмотр списка таблиц
Отобразим список текущих таблиц с помощью знакомой нам команды SHOW .
mysql> SHOW TABLES; Empty set (0.01 sec)
Empty set говорит нам о том, что в базе данных нет таблиц.
Создание таблицы
Создадим таблицу пользователей с помощью команды CREATE .
mysql> CREATE TABLE `users` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `name` VARCHAR(64) NOT NULL , PRIMARY KEY (`id`)); Query OK, 0 rows affected (0.02 sec)
С помощью данной команды мы создали таблицу users , которая будет содержать цифровое ID пользователя (генерируется сервером базы данных автоматически) и имя пользователя до 64 символов.
С более подробной информацией о команде CREATE можно ознакомиться на сайте mariadb.com. Теперь с помощью SHOW можно увидеть созданную таблицу.
mysql> SHOW TABLES; +----------------+ | Tables_in_test | +----------------+ | users | +----------------+ 1 row in set (0.00 sec)
В обязательном порядке рекомендуем изучить создание индексов, так как без этого скорость выполнения запросов на больших таблицах может быть медленной. Очень часто разработчики этим пренебрегают, из-за чего с ростом размера проекта (числа пользователей, товаров, заказов) сайт начинает работать медленно.
Вставка данных в таблицу
Теперь можно добавить нового пользователя в таблицу с помощью команды INSERT , подробнее о синтаксисе данной команды можно узнать на сайте mariadb.com.
mysql> INSERT `users` SET `name` = 'Elena Ivanova'; Query OK, 1 row affected (0.00 sec)
Выборка данных из таблицы
Этим мы добавили нового пользователя «Elena Ivanova» в таблицу users . Настало время получить данные из таблицы с помощью команды SELECT , подробнее об этой команде можно узнать по ссылке.
mysql> SELECT * FROM `users`; +----+---------------+ | id | name | +----+---------------+ | 1 | Elena Ivanova | +----+---------------+ 1 row in set (0.00 sec)
Обратите внимание, пользователю «Elena Ivanova» система базы данных присвоила идентификатор 1, с помощью него можно менять данные для отдельных строк.
В документации можно вдобавок узнать про такие полезные операторы как ORDER , GROUP и LIMIT — для сортировки, объединения и ограничения числа записей. К тому же, мы не рекомендуем использовать ORDER BY RAND() на таблицах с большим числом данных, это будет приводить к созданию временных таблиц и медленному выполнению запросов.
Также, при выборке данных мы использовали символ * , который получил все столбцы из таблицы. Однако, если в таблице много столбцов, то оптимальнее будет делать выборку тех, которые нужны для дальнейшей работы. Например, мы можем получить только имена пользователей:
mysql> SELECT `name` FROM `users`; +---------------+ | name | +---------------+ | Elena Ivanova | +---------------+ 1 row in set (0.00 sec)
Изменение данных в таблице
Давайте обновим имя пользователя с помощью команды UPDATE , подробнее об этом в документации.
mysql> UPDATE `users` SET `name` = 'Elena Popova' WHERE `id` = 1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
При повторном получении данных из таблицы, можно увидеть, что имя было изменено. Когда в таблице много пользователей, то при указании конкретных идентификаторов будут происходить изменения для выбранных пользователей. А если, условие WHERE опустить полностью, то изменения будут внесены для всех пользователей в таблице.
mysql> SELECT * FROM `users`; +----+--------------+ | id | name | +----+--------------+ | 1 | Elena Popova | +----+--------------+ 1 row in set (0.00 sec)
Удаление строки из таблицы
Пользователя можно удалить с помощью команды DELETE , также с использованием идентификатора.
mysql> DELETE FROM `users` WHERE `id` = 1; Query OK, 1 row affected (0.01 sec)
Если опустить указание идентификатора через WHERE , то запрос удалит все строки из таблицы.
Удаление таблицы
Удалим таблицу users , это можно сделать с помощью команды DROP TABLE .
mysql> DROP TABLE `users`; Query OK, 0 rows affected (0.02 sec)
Удаление базы данных
Удалим базу данных test , чтобы вернуться к первоначальному состоянию. Сделать это можно с помощью команды DROP DATABASE .
mysql> DROP DATABASE `test`; Query OK, 0 rows affected (0.00 sec)
Создание пользователей
Подключение сайта к базе данных из под root пользователя небезопасно, в случае компрометации данных для подключения, злоумышленники смогут получить доступ к любой базе данных на сервере. Чтобы подобное не происходило, нужно для каждого сайта создавать пользователя с доступом только к нужным базам данных. Для этого нужно создать пользователя с помощью команды CREATE USER .
mysql> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'KJ2aqCa89vjYsrFh'; Query OK, 0 rows affected (0.01 sec)
В этом примере мы создали пользователя admin с паролем KJ2aqCa89vjYsrFh, подключение будет возможно только с сервера localhost. Если необходимо подключение со стороннего сервера, замените localhost на нужный IP-адрес.
Изменение пароля пользователя
Изменить пароль пользователя можно с помощью ALTER USER .
mysql> ALTER USER 'admin'@'localhost' IDENTIFIED BY '2XdoiZrsDN67ozCd'; Query OK, 0 rows affected (0.00 sec)
Настройка прав пользователя
Создав пользователя, по умолчанию он не будет иметь доступа к базам данных. Чтобы пользователь мог читать и изменять данные в базе данных, нужно его наделить этими правами с помощью команды GRANT .
mysql> GRANT ALL PRIVILEGES ON test.* TO 'admin'@'localhost'; Query OK, 0 rows affected (0.01 sec)
С помощью этого запроса мы предоставили полные привилегии пользователю admin, подключенного с сервера localhost для базы данных test. Вместо ALL PRIVILEGES можно указать только SELECT , тогда пользователь сможет только читать данные из базы данных.
Удаление пользователя
Для удаления пользователя нужно использовать команду DROP USER .
mysql> DROP USER 'admin'@'localhost'; Query OK, 0 rows affected (0.01 sec)
Заключение
Описанные команды SQL выполняются на любом сайте, где происходит хранение каких-либо данных в базе данных и это лишь малая часть функций сервера базы данных. Вы можете дальше изучить разные типы движков MyISAM, InnoDB и MEMORY. Настройку индексов для более быстрой работы выборки данных, различные типы данных в таблицах (INT, CHAR, ENUM, DATE и прочие).