Mysql во FreeBSD
Решил написать некий обобщеный пост по поводу 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).
Если будут еще некоторые интересные аспекты использования mysql в opensource системах - буду скорее всего дополнять эту статью.