MySQL — различия между версиями

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
(викификация)
м
 
(не показано 6 промежуточных версий 5 участников)
Строка 1: Строка 1:
[[Категория:Admin]]
 
 
{{stub}}
 
{{stub}}
 +
==Попробуем ознакомиться и по минимуму настроить MySQL==
 +
=== Установка и запуск ===
 +
 +
apt-get install MySQL-server
 +
chkconfig mysqld on
 +
service mysqld start
 +
 +
===Для начала, укажем для MySQL пароль рута (привилегированного пользователя):===
 +
mysql -u root
 +
Затем, в консоли MySQL ввести следующую команду:
 +
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.
 +
 +
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 ===
 
=== О кодировках в MySQL 5.x ===
  
 
В ALT Linux кодировка, передаваемая через параметр -C в mysqld, задаётся через CHSET в /etc/sysconfig/mysqld, либо определяется по системной локали.
 
В ALT Linux кодировка, передаваемая через параметр -C в mysqld, задаётся через CHSET в /etc/sysconfig/mysqld, либо определяется по системной локали.
Это --character-set-server — кодировка, используемая '''сервером''' по умолчанию.
+
Это --character-set-server — кодировка, используемая '''сервером''' по умолчанию.
 
Как нужно настроить сервер, чтобы по умолчанию кодировка была cp1251, но это можно было переопределять на utf8?
 
Как нужно настроить сервер, чтобы по умолчанию кодировка была cp1251, но это можно было переопределять на utf8?
  
Строка 23: Строка 79:
 
''Что насчёт их кодировки в запросе?''
 
''Что насчёт их кодировки в запросе?''
  
=== Ссылки ===
+
=== Включение логирования каждого запроса: ===
 +
 
 +
Отредактируем файл настроек:
 +
<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}}}}

Текущая версия на 14:31, 4 августа 2016

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Попробуем ознакомиться и по минимуму настроить MySQL[править]

Установка и запуск[править]

apt-get install MySQL-server
chkconfig mysqld on
service mysqld start

Для начала, укажем для MySQL пароль рута (привилегированного пользователя):[править]

mysql -u root

Затем, в консоли MySQL ввести следующую команду:

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.

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 для нагруженного сервера