FreeBSD: Mysql

Решил написать некий обобщеный пост по поводу mysql. Большая часть информации опробована и введена в работу на базе серверов Freebsd – но на линуксах все очень похоже.

Для начала – установка самой базы данных.

У меня в make.conf описаны параметры для инсталяции (на данный момент акутальна версия 5.1):

.if ${.CURDIR:N*/ports/databases/mysql51-server} == ""
WITH_CHARSET=utf8
WITH_XCHARSET=all
WITH_COLLATION=utf8_general_ci
.....
.endif

Остальные параметры не влияют на кодировку по умолчанию. Соответственно – мне нужна по умолчанию кодировка utf8(без параметров выставляется latin1), если необходима кодировка koi8-r то выставляется:

...
WITH_CHARSET=koi8r
WITH_XCHARSET=all
WITH_COLLATION=koi8r_general_ci
...

Также возможно передать команды непосредственно в синтаксисе команды make

Далее инициализируем установленную базу данных
– создаем базы самого mysql

#/usr/local/bin/mysql_install_db --user=mysql

– для первичного запуска

#/usr/local/bin/mysqld_safe &

– для создания пароля для root

#/usr/local/bin/mysqladmin -u root password 'password'

– для автоматического запуска после перезагрузки добавляем mysql_enable=”YES” в /etc/rc.conf
– и при дальнейших входах набираем

#mysql -u root -p

и вводим созданный пароль

Также настоятельно рекомендую установить из портов mysql51-scripts(в зависимости от версии mysql такая же версия скриптов). И после установки запустить mysql_secure_installation, этот скрипт обеспечит более высокий уровень безопасности при дальнейшем использовании базы данных mysql.

Если же у вас уже установлен mysql и при изначальной компиляции/установки стоит кодировка latin1(или любая другая, отличная от необходимой) и нужно поменять например на utf8 – решение есть в стандартных инструментах mysql.
Для начала смотрим в какой кодировки у нас сама база:

mysql> SHOW CREATE DATABASE database_name;

в конце видим: /*!40100 DEFAULT CHARACTER SET latin1 */
а нам надо поменять на utf8, для этого вводим:

mysql> ALTER DATABASE database_name DEFAULT CHARACTER SET utf8;
mysql> SHOW CREATE DATABASE database_name;

Теперь мы видим /*!40100 DEFAULT CHARACTER SET utf8 */
Далее необходимо поменять кодировку в уже созданных таблицах в этой базе, для этого вводим для каждой таблицы:

mysql> ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
mysql> SHOW CREATE TABLE table_name;

и видим в конце DEFAULT CHARSET=utf8
Но через терминал мне все равно не корректно отображались русские символы(а именно вопросительными значками) поэтому при каждом заходе приходится вводить команду:

mysql> SET NAMES utf8;

последнее изменение проводилось в линуксе(практически чистый Debian).

Для того чтобы по умолчанию при создании баз данных/таблиц – использовалась кодировка, например utf8, добавляем в my.cnf

в раздел [mysqld]
default-character-set = utf8
character-sets-dir = /usr/share/mysql/charsets

в раздел [client]
default-character-set = utf8
character-sets-dir = /usr/share/mysql/charsets

Leave a Reply