- Sergey Danielyan
- Правильная установка и настройка MySQL в Linux
- Установка MySQL
- Настройка сервера
- MySQL: Run Query from Bash Script or Linux Command Line
- MySQL: Execute SQL Queries From The Linux Shell
- MySQL: Run SQL Queries From A Bash Script
- MySQL
- Содержание
- Версии MySQL в Ubuntu
- Установка
- Настройка
- Доступ к серверу из сети
- Кодировки
- Администрирование
- Установка root пароля
- Восстановление забытого пароля для root’a
- Отключение и включение автозагрузки сервиса
- MySQL Workbench
- Работа с MySQL базами данных в консоли Linux
- Подключение
- Создание
- Просмотр
- Операции
Sergey Danielyan
Правильная установка и настройка MySQL в Linux
Эта статья, по замыслу, должна служить пошаговым руководством по корректной настройки MySQL сервера в Linux в общем и в CentOS в частности, начиная от подготовки системы и заканчивая настройкой прав пользователей.
В этот раз текста будет минимум — только команды.
Установка MySQL
Проверяем, установлен ли MySQL сервер
Если установлен, шаги по установке можете пропустить, хотя ознакомиться я все же советую с ними.
Существуют следующие основные пакеты связанные с mysql:
- mysql — клиент mysql
- mysql-server — сервер mysql
- mysql-devel — для разработки и подключения библиотек и хидеров mysql
- mysql-connector-java — JDBC коннектор (используется, например, в EJBCA)
sudo yum install mysql mysql-server mysql-devel mysql-connector-java
Теперь надо установить сервер mysql на запуск в определенные runlevel‘ы (2, 3 и 5):
Если кто забыл соответствие цифрового значения runlevel‘а символьному:
Стартуем демон mysql:
Настройка сервера
Теперь пора настроить сервер. Начнем с пользователей.
Вот состояние таблицы user до начала действий с ней:
mysql -u root
> use mysql
> select host,user from user;
5 rows in set (0.00 sec)
> quit
Как видете, безопасность на уровне плинтуса. Хорошо хоть, что анонимного пользователя нет.
Для настройки базовых вещей в сервере, запустим настройку сервера через mysql_secure_installation. На время этой установки, пароль будет security. Ваш же пароль, как понимаете, должен отличаться.
Запустится скрипт, с запросами на то или иное действие. Вот ответы:
Skip root password for root
Мы еще не устанавливали пароль для root, поэтому при запуске скрипта и запросе пароля для root , просто нажмите Enter .
Install new password for root: security
А вот тут можно установить пароль для root
Do remove an anonymous user
На вопрос о том, удалить ли анонимного пользователя, отвечаем да
Do not disallow remote connections
Не запрещаем коннект к нашему северу с удаленных серверов (если, конечно, эта опция вам нужна, в другом случае, запретите ее)
Do remove a test database
Тестовая база нам не нужна — удаляйте ее
Do reload the privileges
Перегрузим привилегии для их активации
Теперь для всех root пользователей установлен пароль.
Если в ходе этой конфигурации вы не установили пароль для root , можете сделать это так:
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘security’);
SET PASSWORD FOR ‘root’@’localhost.localdomain’ = PASSWORD(‘security’);
SET PASSWORD FOR ‘root’@’127.0.0.1’ = PASSWORD(‘security’);
UPDATE mysql.user SET Password = PASSWORD(‘security’) WHERE user = ‘root’;
Если же вы не запускали конфигурацию через mysql_secure_installation или не хотите этого делать по каким-то другим причинам, следующие команды удалят any пользователей:
DROP USER »@’localhost’;
DROP USER »@’localhost.localdomain’;
Также, пароль для IPv6 localhost (@::1) можно установить таким образом:
Близится финал нашего действия. Осталось две вещи:
- открыть порты для mysql:
sudo iptables -I INPUT -p tcp —dport 3306 -m state —state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I OUTPUT -p tcp —sport 3306 -m state —state ESTABLISHED -j ACCEPT
выставить кодировку UTF-8 по-умолчанию — файл /etc/my.cnf :
[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
character-set-server = utf8
collation-server = utf8_unicode_ci
[client]
default-character-set = utf8
Источник
MySQL: Run Query from Bash Script or Linux Command Line
Sometimes it is needed to run some MySQL queries from the Linux command-line interface without accessing the interactive MySQL prompt.
For example, when it is required to schedule a backup of MySQL database or to automate execution of some SQL queries with a Bash script.
In this article i will show the most useful, from my point of view, options of the MySQL command-line client and show how to run multiple SQL queries to a database from a Bash script.
Cool Tip: List MySQL users, their passwords and granted privileges from the command-line prompt! Read more →
MySQL: Execute SQL Queries From The Linux Shell
Execute SQL query from the Linux command-line:
-pPASSWORD: This is not a typo! There should not be a space between your password and the -p when you pass it on the command-line!
Run SQL query on the explicitly specified database:
Run SQL query on the explicitly specified host:
Suppressing column headings:
Suppress table borders:
Save the output to a file:
Cool Tip: Create a MySQL database and GRANT ALL PRIVILEGES on it to a user! Simple and clear MySQL tutorial with good examples! Read more →
The most useful MySQL options when executing SQL queries from the Linux command-line or a Bash script:
Option | Description |
---|---|
—user , -u | The MySQL user name to use when connecting to the server. |
—password , -p | The password to use when connecting to the server. |
—database , -D | The database to use. |
—host , -h | Connect to the MySQL server on the given host. |
—skip-column-names , -N | Do not write column names in results. |
—batch , -B | Print results using tab as the column separator, with each row on a new line. |
MySQL: Run SQL Queries From A Bash Script
The part tells the shell that i am going to enter multi-lines until the EOF tag.
Note that here shouldn’t be any spaces just before the second EOF tag, otherwise it will be considered as a part of the SQL query.
By the way, you can rename the EOF to anything you want, e.g. .
Cool Tip: Do you have a backup? You MUST have it! Backup MySQL databases from the command-line! This is really easy! Read more →
Use the following construction if you need to run multiple SQL queries from a Bash script:
Источник
MySQL
Содержание
MySQL — свободная СУБД для малых и средних приложений. Входит в состав LAMP и XAMPP.
Версии MySQL в Ubuntu
Установка
MySQL есть в репозиториях Ubuntu. Он разбит на несколько пакетов.
Для того чтобы установить MySQL сервер выполните команду:
При установке конфигурационный скрипт запросит пароль для администратора (root) базы данных.
Для того чтобы установить консольный клиент MySQL выполните команду:
Для того чтобы установить модуль для работы с MySQL в PHP выполните команду:
Настройка
Конфигурация сервера MySQL содержится в файле /etc/mysql/my.cnf.
Доступ к серверу из сети
По умолчанию сервер MySQL принимает соединения только с локальной машины. Для того, чтобы разрешить подключаться к нему с других машин замените строку
Кодировки
По-умолчанию в Ubuntu MySQL устанавливается с кодировкой latin1 . В этом можно убедиться посмотрев вывод запроса:
В связи с этим, даже используя при работе с сервером команду
и используя при создании таблиц
невозможно добиться полной поддержки кодировки utf8:
Кодировка по-умолчанию все равно останется latin1, что неудобно и может привести к ошибкам.
Чтобы сервер сразу загружался с нужной кодировкой, необходимо отредактировать файл /etc/mysql/my.cnf:
В секцию [mysqld] добавьте следующие строки:
Так же желательно установить кодировку для клиента и mysqldump. Для этого в секциях [client] и [mysqldump] необходимо добавить строчку:
Перезагрузите сервер MySQL:
После этого список переменных будет выглядеть так:
Администрирование
Установка root пароля
Восстановление забытого пароля для root’a
Схожая проблема возникает если не задать пароль при установке MySQL, в этом случае mysql использует плагин unix-socket.
Запустите mysqld с параметрами —skip-grant-tables —user=root :
Если команда не сработает, добавьте строку « skip-grant-tables » в секцию « [mysqld] » файла /etc/mysql/mysql.conf.d/mysqld.cnf . Затем выполните sudo service mysql restart . После выполнения операций удалите эту строку.
Подключитесь к MySQL-серверу командой:
Обновите пароль для root’a:
Для MySQL версий mysqldump . Основные ее параметры приведены в таблице:
Параметр | Описание | Пример |
---|---|---|
-u | Пользователь, от лица которого будет производится дамп баз данных. | -uroot |
-p |
-p
Отключение и включение автозагрузки сервиса
Начиная с версии Ubuntu 15.04 отключение и включение сервисов возможно одной командой, без редактирования конфигов. В примерах команд ниже слово «SERVICE» следует заменить на «mysql».
Узнать стоит ли сервис в автозагрузке:
Убрать сервис из автозагрузки в Ubuntu-16.04:
Добавить сервис в автозагрузку в Ubuntu-16.04:
MySQL Workbench
MySQL Workbench – инструмент для визуального проектирования баз данных. MySQL Workbench существует в двух вариантах:
Источник
Работа с MySQL базами данных в консоли Linux
Долгое время все основные операции с MySQL-базами я проводил в веб-интерфейсе — посредством обычной хостинг-панели и утилиты PhpMyAdmin. В таком формате все администрирование базы данных ложилось на плечи приложения PhpMyAdmin, которое написано на языке PHP и зависит от разных факторов, например конфигурации веб-сервера, версий программного обеспечения и самого PHP. Когда количество баз данных растет, а окружения постоянно меняются, MyPhpAdmin требует дополнительных ресурсов и настройки, иначе может работать не совсем стабильно, например срабатывают ошибки, лимиты и таймауты. Да и сам веб-интерфейс имеет свои ограничения, поэтому для серьезных задач профессионалы используют только командную строку. Как выяснилось, это намного быстрее, стабильнее и безопаснее. В этой заметке хочу поделиться основными командами для работы с MySQL/MariaDB в консоли VPS-сервера под управлением ОС Linux.
Подключение
mysql -u username -p #подключение к MySQL-серверу от имени пользователя
mysql -u username -p databasename #подключение к базе данных от имени ее пользователя
exit #покинуть базу данных и оборвать соединение с MySQL-сервером
Создание
CREATE DATABASE databasename; #создать базу данных с указанным именем
SHOW CREATE DATABASE databasename; #создание базы данных с выводом параметров
CREATE DATABASE `databasename` CHARACTER SET utf8 COLLATE utf8_general_ci; #создание базы данных с указанными параметрами (кодировка utf8)
CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘userpassword’; #создать пользователя базы данных с именем и паролем
GRANT ALL PRIVILEGES ON databasename.table_of_database TO ‘username’@’localhost’; #предоставить пользователю права доступа к базе данных и ее таблице
GRANT ALL PRIVILEGES ON databasename.* TO ‘username’@’localhost’; #предоставить пользователю права доступа ко всем таблицам указанной базы данных
GRANT ALL PRIVILEGES ON *.* TO ‘username’@’localhost’; #предоставить пользователю права доступа ко всем базам данных и таблицам
GRANT SELECT, INSERT, DELETE ON databasename.* TO ‘username’@’localhost’; #предоставить пользователю ограниченные права доступа с возможностью выбирать базу данных, вставлять строки в таблицы, удалять строки
FLUSH PRIVILEGES; #применить, чтобы установленные права доступа для пользователя вступили в силу
REVOKE ALL PRIVILEGES ON databasename.* TO ‘username’@’localhost’; #отменить все права доступа к указанной базе данных и всем ее таблицам для пользователя
Просмотр
SHOW DATABASES; #показать все базы данных
USE databasename; #перейти в указанную базу данных
SHOW TABLES; #показать все таблицы текущей базы данных
SELECT * FROM tablename; #показать содержание указанной таблицы базы данных
SELECT User FROM mysql.user; #вывести на экран всех пользователей MySQL
SELECT User, Host FROM mysql.user; #вывести на экран всех пользователей MySQL и их хосты
SELECT User, Host, Password FROM mysql.user; #вывести на экран всех пользователей MySQL, их хосты и пароли (количество параметров можно добавлять)
SHOW GRANTS; #просмотр всех привилегий активного пользователя
SHOW GRANTS FOR ‘username’@’localhost’; #показать права доступа (привилегии) для указанного пользователя базы данных
Операции
DROP DATABASE databasename; #удалить базу данных
DROP USER ‘username’@’localhost’; #удалить пользователя базы данных
SET PASSWORD FOR ‘username’@’localhost’ = PASSWORD(‘newpassword’); #установить пароль для пользователя базы данных
RENAME TABLE tablename TO newtablename; #переименовать название ранее выбранной таблицы базы данных (выбор с помощью USE)
DELETE FROM tablename WHERE fieldname = ‘name’; #удалить строку из указанной таблицы
ALTER TABLE tablename DROP INDEX columnname; #удалить столбец из базы данных
TRUNCATE TABLE Tablename; #полное удаление содержимого таблицы базы данных
mysqldump -u username -p databasename > dump_file.sql #создание резервной копии базы данных (дамп)
mysqldump -u root -p -B dbname1 dbname2 > dump.sql #создание дампа выбранных баз данных
mysqldump -u root -p -A > dump.sql #дамп всех баз данных
mysql -u root -p namedatabase #восстановление или импорт дампа базы данных
SHOW GLOBAL STATUS; #вывести на экран статистику MySQL-базы данных
Источник