MySQL: различия между версиями
Swopster (обсуждение | вклад) Нет описания правки |
|||
(не показано 6 промежуточных версий 5 участников) | |||
Строка 1: | Строка 1: | ||
{{stub}} | {{stub}} | ||
==Попробуем | ==Попробуем ознакомиться и по минимуму настроить MySQL== | ||
=== Установка и запуск === | |||
apt-get install MySQL-server | |||
chkconfig mysqld on | |||
service mysqld start | |||
===Для начала, укажем для MySQL пароль рута (привилегированного пользователя):=== | ===Для начала, укажем для MySQL пароль рута (привилегированного пользователя):=== | ||
mysql -u root | mysql -u root | ||
Затем, в консоли MySQL ввести следующую команду: | Затем, в консоли MySQL ввести следующую команду: | ||
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8...) | |||
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'you_own_pass'; | |||
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3...) | |||
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('you_own_pass'); | mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('you_own_pass'); | ||
точка с запятой в конце обязательны. Если опечаток | точка с запятой в конце обязательны. Если опечаток не было и все правильно, сервер выдаст строку: | ||
Query OK, 0 rows affected (0.00 sec). | Query OK, 0 rows affected (0.00 sec). | ||
Если у Вас уже был установлен пароль рута или какого-либо другого пользователя, для входа в консоль MySQL используется команда: | Если у Вас уже был установлен пароль рута или какого-либо другого пользователя, для входа в консоль MySQL используется команда: | ||
Строка 17: | Строка 25: | ||
===Создаем пользователей:=== | ===Создаем пользователей:=== | ||
1.Для | 1.Для создания пользователя со ВСЕМИ правами. Пишут, что использовать только для устранения неполадок. | ||
mysql> GRANT ALL PRIVILEGES ON *.* TO 'yourusername'@'localhost' IDENTIFIED BY 'you_own_pass' WITH GRANT OPTION; | mysql> GRANT ALL PRIVILEGES ON *.* TO 'yourusername'@'localhost' IDENTIFIED BY 'you_own_pass' WITH GRANT OPTION; | ||
2. Для создания нового пользователя с меньшими привилегиями (должно работать для большинства веб-приложений), | 2. Для создания нового пользователя с меньшими привилегиями (должно работать для большинства веб-приложений), | ||
Строка 24: | Строка 32: | ||
Для выхода из консоли MySQL: | Для выхода из консоли MySQL: | ||
mysql> \q | mysql> \q | ||
Для создания пароля рута и баз как АЛЬТЕРНАТИВУ можно использовать mysqladmin: | |||
mysqladmin -u root -p password yourpassword | |||
и | |||
mysqladmin -u root -p create my_database | |||
==Далее о нюансах== | ==Далее о нюансах== | ||
Строка 38: | Строка 50: | ||
или | или | ||
GRANT ALL PRIVILEGES ON *.* TO 'swopster'@'192.168.0.2' IDENTIFIED BY 'you_own_pass' WITH GRANT OPTION; | GRANT ALL PRIVILEGES ON *.* TO 'swopster'@'192.168.0.2' IDENTIFIED BY 'you_own_pass' WITH GRANT OPTION; | ||
3.Как получить доступ к MySQL из сети? Если действительно необходимо и доступ ограничивается внешними средствами — | 3.Как получить доступ к MySQL из сети? Если действительно необходимо и доступ ограничивается внешними средствами — закомментируйте (поставьте знак # в начале строки) параметр | ||
skip-networking | skip-networking | ||
в файле /var/lib/mysql/my.cnf, с последующим перезапуском службы mysqld. | в файле /var/lib/mysql/my.cnf, с последующим перезапуском службы mysqld. | ||
Штатным средством включения внешнего доступа является команда | |||
control mysqld server | |||
4. Посмотреть на каком порту, для каких интерфейсов работает mysqld демон, командой: | 4. Посмотреть на каком порту, для каких интерфейсов работает mysqld демон, командой: | ||
Строка 70: | Строка 85: | ||
''Что насчёт их кодировки в запросе?'' | ''Что насчёт их кодировки в запросе?'' | ||
=== Ссылки | === Включение логирования каждого запроса: === | ||
Отредактируем файл настроек: | |||
<pre> | |||
mcedit /var/lib/mysql/my.cnf | |||
# for logging | |||
general_log_file = /log/query | |||
general_log = 1 | |||
</pre> | |||
Логи будут тут: | |||
/var/lib/mysql/log/query | |||
Важно отметить, что пути отсчитываются от корня чрута, то есть от | |||
/var/lib/mysql/ | |||
по-умолчанию. | |||
== Ссылки == | |||
[http://linuxgangster.org/modules.php?name=Content&file=printout&id=8 Оптимизация настроек MySQL + Apache для нагруженного сервера] | [http://linuxgangster.org/modules.php?name=Content&file=printout&id=8 Оптимизация настроек MySQL + Apache для нагруженного сервера] | ||
[[Категория:Admin]] | |||
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}} | |||
[[Category:MySQL]] | |||
{{Category navigation|title=MySQL|category=MySQL|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 12:49, 10 марта 2023
Попробуем ознакомиться и по минимуму настроить MySQL
Установка и запуск
apt-get install MySQL-server chkconfig mysqld on service mysqld start
Для начала, укажем для MySQL пароль рута (привилегированного пользователя):
mysql -u root
Затем, в консоли MySQL ввести следующую команду: Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8...)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'you_own_pass';
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3...)
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('you_own_pass');
точка с запятой в конце обязательны. Если опечаток не было и все правильно, сервер выдаст строку: Query OK, 0 rows affected (0.00 sec). Если у Вас уже был установлен пароль рута или какого-либо другого пользователя, для входа в консоль MySQL используется команда:
mysql -u swopster -p или mysql -u root -p
Создаем базу:
mysql> CREATE DATABASE my_database;
Создаем пользователей:
1.Для создания пользователя со ВСЕМИ правами. Пишут, что использовать только для устранения неполадок.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'yourusername'@'localhost' IDENTIFIED BY 'you_own_pass' WITH GRANT OPTION;
2. Для создания нового пользователя с меньшими привилегиями (должно работать для большинства веб-приложений), который может использовать только базу данных с именем "my_database", в MySQL строке введите:
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON my_database.* TO 'yourusername'@'localhost' IDENTIFIED BY 'you_own_pass';
Для выхода из консоли MySQL:
mysql> \q
Для создания пароля рута и баз как АЛЬТЕРНАТИВУ можно использовать mysqladmin:
mysqladmin -u root -p password yourpassword и mysqladmin -u root -p create my_database
Далее о нюансах
1. Конфигурационный файл расположен:
/var/lib/mysql/my.cnf
После правок перезагружать сервис: service mysqld restart.
2. Подключения к базе данных. При обычных параметрах, подключения идут к базе локально (localhost, 127.0.0.1, 0.0.0.0). Но если нам требуется подключится к базе из другого места, нужно думать заранее. Потому, что из соображений безопасности доступа к базе все подключения из вне отрублены. Такие необходимости возникают при необходимости подключится допустим из среды разработки NetBeans. При попытке подключения нам будет выдано сообщение:
"Host '192.168.0.2' is not allowed to connect to this MySQL server"
Решением будет, только указание расположения подключающегося клиента при его создании.
GRANT ALL PRIVILEGES ON *.* TO 'igor'@'10.3.3.23' IDENTIFIED BY 'you_own_pass' WITH GRANT OPTION; или GRANT ALL PRIVILEGES ON *.* TO 'swopster'@'192.168.0.2' IDENTIFIED BY 'you_own_pass' WITH GRANT OPTION;
3.Как получить доступ к MySQL из сети? Если действительно необходимо и доступ ограничивается внешними средствами — закомментируйте (поставьте знак # в начале строки) параметр
skip-networking
в файле /var/lib/mysql/my.cnf, с последующим перезапуском службы mysqld.
Штатным средством включения внешнего доступа является команда
control mysqld server
4. Посмотреть на каком порту, для каких интерфейсов работает mysqld демон, командой:
netlist -tap ----- в выводе будет, что-то наподобие: root 13449 mysqld 3 tcp 0.0.0.0:3306 0.0.0.0:0 LISTEN
Видно, что mysql работает для всех интерфейсов и слушает 3306 порт.
О кодировках в MySQL 5.x
В ALT Linux кодировка, передаваемая через параметр -C в mysqld, задаётся через CHSET в /etc/sysconfig/mysqld, либо определяется по системной локали. Это --character-set-server — кодировка, используемая сервером по умолчанию. Как нужно настроить сервер, чтобы по умолчанию кодировка была cp1251, но это можно было переопределять на utf8?
Кодировку и таблицу сортировки, используемые по умолчанию в сервере, лучше задавать в my.cnf:
character_set_server = utf8 collation_server = utf8_general_ci
Для клиентов (например, команды mysql) кодировка указывается в секции [client] файла my.cnf:
[client] default-character-set=cp1251
При открытии соединения с базой нужно указывать кодировку, в которой клиент будет работать с базой. Это можно сделать строкой
init-connect="SET NAMES cp1251"
в my.cnf. Команда set names устанавливает при подсоединении такие переменные как set_client, set_result, collaction_client, что позволяет серверу корректно воспринимать запросы и возвращать ответы.
Обратите внимание, что имена (таблиц и полей) хранятся в сервере в кодировке utf8 и это неизменяемо. Что насчёт их кодировки в запросе?
Включение логирования каждого запроса:
Отредактируем файл настроек:
mcedit /var/lib/mysql/my.cnf # for logging general_log_file = /log/query general_log = 1
Логи будут тут:
/var/lib/mysql/log/query
Важно отметить, что пути отсчитываются от корня чрута, то есть от
/var/lib/mysql/
по-умолчанию.
Ссылки
Оптимизация настроек MySQL + Apache для нагруженного сервера