Первоначальная настройка MySQL
В этой небольшой статье я хотел лишь описать самые первые шаги, которые нужно делать после того, как вы скачали и установили пакет для работы с базами данных MySQL. Я совсем не собирался здесь описывать сам MySQL и не рассчитывал вдаваться во всякие технические подробности относительно безопасности. Если вы хотите подробной информации, Read The Fine Manual. Если вы хотите как можно быстрее начать делать базы данных, читайте это маленькое руководство.
После того, как вы поставили серверную и клиентскую части пакета MySQL, следующим шагом будет заставить все это работать. Демон базы данных запускается командой mysqld. При помощи ключа [—help] можно посмотреть все доступные опции. Так же этот ключ позволит посмотреть список директорий, с которыми работает MySQL.
Для функционирования пакета, надо создать главную системную базу данных по имени mysql. Все базы создаются в отдельно выделенной папке, которую как раз можно вычислить при помощи mysqld —help. Найдите после длинного списка возможных ключей строчки, явно указывающие на разные директории.
basedir: говорит само за себя — это базовая директория, относительно которой могут быть заданы другие.
datadir: вот в ней-то и будут храниться все базы данных.
Если вы устанавливали MySQl при помощи RPM-пакетов или еще каким-нибудь автоматизированным способом, возможно в этой директории уже существует системная база данных. Если же вы компилировали пакет или переписывали исполняемые файлы вручную, то возможно ее не существует или она пуста. В этом случае базу mysql надо создать с помощью скрипта mysql_install_db. Если не будет никаких ошибок, то после окончания работы скрипта, он попросит вас задать пароль для пользователя root. Что это значит?
Базы данных в MySQL, как и во многих других системах доступны одновременно большому количеству пользователей, которые могут подключаться к серверу MySQL как с локального компьютера, посредством серверных языков и CGI, так и по TCP/IP через клиентов MySQL, находящихся на удаленных компьютерах. После создания, в системной базе будут описаны в том числе привелегии для разных пользователей. Самый главный из них конечно же пользователь root, который имеет полный доступ ко всем базам. Для него надо задать пароль, так как по умолчанию его нет.
Означает запуск главного MySQL-клиента по имени mysql от имени пользователя root (-u root) и выбор базы данных mysql Далее откроется консолька программы mysql. Делаем самый обычный SQL-запрос:
Это обновит поля Password для таблицы user, в которой поля user=’root’. Другими словами для пользователя root будет установлен пароль new_password закриптованный по методу PASSWORD().
Заставляем MySQL принять изменения:
Есть еще один способ, работающий на версиях MySQL >= 3.22:
или вообще из shell’а с помощью программы mysqladmin:
Все, теперь root не сможет просто так войти в программу mysql. Пишем
и убеждаемся в этом:
Заходить с паролем надо так:
Вот и все. Пароль для root’а совсем не обязательно должен быть таким же как его пароль в системе.
Если пароль был случайно забыт, чтобы его задать по новой, придется стереть файлы mysql.frm mysql.MYI и mysql.MYD из папки с базами данных, затем запустить скрипт mysql_install_db и повторить все по новой.
Если вам интересна структура системной базы данных вы можете строить исследовать ее с помощью SQL-запросов из программы mysql, а так же с помощью внутренних команд и утилиты mysqlshow. Например
покажет список всех таблиц в базе данных some_database, а запрос
выдаст содержимое some_table в табличном виде.
ok. Теперь хорошо бы добавить пользователей базы данных, вместе с их правами и паролями.
Используем выражение GRANT. Можно опять вносить прямые поправки в таблицы mysql, но это будет слишком длинно. Итак:
Это создаст пользователя admin, который сможет делать все что захочет со всеми базами данных и вообще mysql-ем, подключаясь только с localhost и указывая пароль some_password. Чтобы admin мог подключаться с других хостов, надо добавить строчку
Кстати *.* означает к каким базам данных и таблицам имеет доступ admin. Обозначения делаются следующим образом «база.таблица»
Для создания более-менее продвинутого пользователя можно использовать такое выражение:
Такой пользователь сможет использовать все основные SQL-команды для данных в таблицах, а так же создавать и удалять базы данных. Однако он не сможет выключать, перезапускать демон MySQL, смотреть на список процессов, не будет иметь доступ к файлам сервера, а так же сможет подключаться к базе данных только с localhost’а и указывая свой пароль.
Вот все возможные опции для привилегий:
SELECT,INSERT,UPDATE,DELETE — одноименные sql-команды операций с данными
INDEX — операции с индексами в таблицах
REFERENCES — работа со ссылками в базах данных и таблицах
CREATE, DROP — создание и удаление баз данных и таблиц
GRANT, ALTER — совершение операций с привилегиями
RELOAD, SHUTDOWN, PROCESS — управление сервером mysql. Перезапустить, убить и посмотреть все подключения соответственно. Точнее это дает право на выполнение команд программы mysqladmin, направленных на исполнение указанных целей
FILE — позволяет загонять в базу данных любой читабельный файл с сервера
Выбирайте сами каких пользователей создавать. Для многопользовательского сервера можно посоветовать делать пользователей, способных только изменять данные одной базы данных. Если всем сервером заведует один вебмастер, вполне можно предоставить ему более широкую свободу действий.
Отлично! Теперь минимум того, что может понадобится от сервера MySQL настроено и можно начинать создавать таблицы и вносить данные.
И не забудьте добавить mysqld в автозапуск.
MySQL начало работы и импорт данных
Авторизовавшись в консоли сервера нужно подключиться к mysql введя имя пользователя, пароль и указав имя хоста (FQDN или IP адрес — по умолчанию если не указано значение -h используется localhost)
Enter password: ********
Также можно вводить пароль сразу
Между ключем -p и самим паролем при этом не должно быть пробела, иначе пароль будет воспринят как имя базы данных. Этот вариант плох тем, что пароль останется в history и его можно будет посмотреть в дальнейшем.
Основы работы с MySQL
Любой запрос (за исключением USE, QUIT и еще нескольких) должен завершаться точкой с запятой. Запрос может быть разнесен на несколько строк и будет выполнен только после введения точки с запятой
SELECT
-> *
-> FROM
-> gebwoocommerce_api_keys
-> ;
Empty set (0.01 sec)
От выполнения запроса можно отказаться после введения введения нескольких строк выполнив \c
По тому каким образом выглядит приглашение MySQL можно понять состояние выполнения запроса и то, что именно ожидает сервер от администратора
1) >
( или вариации: mysql>, MariaDB> ) Ожидается ввод
2) ->
Ожидается следующая строка запроса длиной в несколько строк
3) ‘>
Ожидается следующая строка запроса длиной в несколько строк в случае если запрос начат с одинарной кавычки
4) «>
Ожидается следующая строка запроса длиной в несколько строк в случае если запрос начат с двойной кавычки
5)`>
Ожидается следующая строка запроса длиной в несколько строк в случае если запрос начат с backtick (“`”)
6) /*>
Ожидается следующая строка запроса длиной в несколько строк в случае если запрос начат со знака комментария /*
Создание базы данных MySQL и ее наполнение данными
Работать от имени пользователя root не желательно, лучшим решением является создание пользователя с ограниченным доступом
Например, добавим пользователя user (в тестовой среде можно работать и от имени root). Авторизовавшись в консоли MySQL создаем базу данных и таблицы
CREATE DATABASE REAL_ESTATE_AGENCY;
Query OK, 1 row affected (0.00 sec)
+——————————+
| Database |
+——————————+
| information_schema |
| mysql |
| performance_schema |
| REAL_ESTATE_AGENCY |
+——————————+
4 rows in set (0.03 sec)
Database change
CREATE TABLE REAL_ESTATE (type VARCHAR(20), city VARCHAR(20), floorspace INT, district VARCHAR(20), street VARCHAR(20), rentorsale VARCHAR(20), PRICE VARCHAR (20));
Query OK, 0 rows affected (0.01 sec)
CREATE TABLE PEOPLE (name VARCHAR(20), profession VARCHAR(20), age INT, city VARCHAR(20), district VARCHAR(20), rentorsale VARCHAR(20), PRICE VARCHAR (20));
Query OK, 0 rows affected (0.01 sec)
+——————————+
| Tables_in_REAL_ESTATE_AGENCY |
+——————————+
| PEOPLE |
| REAL_ESTATE |
+——————————+
2 rows in set (0.00 sec)
Информацию о структуре таблицы и всех существующих столбцах и колонках можно получить выполнив команду DESCRIBE
+————+————-+——+——+———+——-+
| Field | Type | Null | Key | Default | Extra |
+————+————-+——+——+———+——-+
| type | varchar(20) | YES | | NULL | |
| city | varchar(20) | YES | | NULL | |
| floorspace | int(11) | YES | | NULL | |
| district | varchar(20) | YES | | NULL | |
| street | varchar(20) | YES | | NULL | |,
| rentorsale | varchar(20) | YES | | NULL | |
| PRICE | varchar(20) | YES | | NULL | |
+————+————-+——+——+———+——-+
7 rows in set (0.00 sec)
Вывести все содержимое таблицы можно с помощью самого общего SELECT запроса (этот вид запросов используется чаще всего и будет подробно рассмотрен в дальнейшем)
Empty set (0.00 sec)
Данных сейчас нет — наполним таблицы. Делать это можно выполняя UPDATE-ы с необходимыми значениями или загружая данные из тексовых документов. На этапе первоначальной загрузки второй способ гораздо удобнее. Воспользуемся им.
Загрузка данных в таблицы MySQL
Сохраняем информацию в /tmp/real_estate.txt — значения в столбцах разделяем табуляцией. После этого в консоли загружаем данные предварительно выбрав таблицу.
LOAD DATA LOCAL INFILE ‘/tmp/real_estate.txt’ INTO TABLE REAL_ESTATE;
Может возникнуть следующая ошибка.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Если ошибка возникает к MySQL нужно подключаться с опцией —local-infile=1:
LOAD DATA LOCAL INFILE ‘/tmp/real_estate.txt’ INTO TABLE REAL_ESTATE;
Query OK, 13 rows affected (0.00 sec)
Records: 13 Deleted: 0 Skipped: 0 Warnings: 0
Результаты SELECT теперь выглядят иначе:
Если для какого-то столбца и ряда нужно значение NULL в текстовом документе оно должно быть представлено как \N. В MySQL начало работы с базами и таблицами выглядит именно так. Далее рассмотрим основы использования SELECT.
Как начинающим освоить MySQL
Каждый, кто поставил перед собой цель освоить веб-технологии рано или поздно нужно будет освоить язык SQL — язык структурированных запросов, применяемый для создания и управления данными в реляционных базах данных. Если говорить о современном веб-приложении, то сегодня практически каждое приложение взаимодействует с СУБД — система управления базой данных.
Самое популярное СУБД для работы с веб-приложениями — MySQL. Сегодня практически все веб-сайты, которые работают в сети взаимодействуют с СУБД MySQL. Конечно MySQL не единственное СУБД, есть ряд других, но сложилось так, что самое популярное. Поэтому разработчикам веб-приложений необходимо освоить СУБД MySQL и язык SQL.
Не нужно покупать или качать десятки книг, все равно вы их сразу не прочтете, а если уж осилите, то огромного результата не даст. Необходим результат, его мы можем получить только когда будем, что-то делать, а не читать постоянно книги. Читать книги — хорошо, но еще лучше практиковаться, только так мы получаем опыт и навыки.
Выберите, одну толковую книгу по изучении MySQL. Сосредоточьтесь на этой книге, прочтите ее, закрепите каждую главу на практике. Если, что-то слабо усвоилось, практикуйтесь, не бойтесь вернуться и еще несколько раз прочитать и сделать. Рекомендую прочесть книгу Алана Бьюли «Изучаем SQL», лично мне эта книга очень помогла. Книга написана простым языком, для простых людей в книге доступным языком описывается как установить сервер MySQL, как работают операторы, фильтры и т.д. Подробнее об этой книге читайте здесь.
Если нету еще навыков работы с MySQL, нету понимания типов данных и операторов SQL, не рекомендую начинать осваивать в phpMyAdmin. Это не значить, что phpMyAdmin — плохо. Главная задача освоить SQL и MySQL — лучше делать через консольное приложение.
Скачайте с официального сайта бесплатно сервер MySQL, установите его себе на компьютер и работайте. Например: если взять книгу Алана Бьюли «Изучаем SQL» в ней подробный курс SQL и работа с MySQL, все примеры работы через консольное приложение.
Читайте, только одну книгу, не пытайтесь хватать все и сразу, так дело не пойдет, потратите время так ничему и не научитесь. Важно один раз освоить основы и дальше только нужна будет практика, практика и документация MySQL, которая находиться на официальном сайте.
Ваши инструменты: выбранная книга, сервер MySQL, практика, практика и еще раз практика.
Имея опыт работы через консольное приложение, разработчику не составить сложности работать в том же самом phpMyAdmin, ему не составит сложности писать все команды SQL. Это нужно и важно, потому, что управлять и создавать базу данных можно в phpMyAdmin толком и не зная SQL. Но помните SQL — запросы писать нужно будет при разработке веб-приложений, от этого не уйти.
Именно по этой причине я рекомендую начинать обучение SQL и MySQL на консольном приложении.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.