Mysql


 * mysqldump

Установка
Параметры можно как с ключом -D (-DWITH_CHARSET=utf8), так и без. Если его показываешь, то не показывается окно OPTIONS. А для депенсов или компонентов метапорта - показывается...

make config-recursive install clean -C /usr/ports/databases/mysql55-server/ WITH_COLLATION=utf8_general_ci WITH_CHARSET=utf8 WITH_XCHARSET=all

коллейшен это кодировка для выполнения сравнений (сущность из самой БД), XCHARSET - по-видимому, набор доступных кодировок

.if defined(WITH_CHARSET) && ${WITH_CHARSET} != "" CONFIGURE_ARGS+=--with-charset=${WITH_CHARSET} .endif

pre-fetch: @${ECHO} "" @${ECHO} "You may use the following build options:" @${ECHO} "" @${ECHO} "     WITH_CHARSET=charset    Define the primary built-in charset (latin1)." @${ECHO} "     WITH_XCHARSET=list      Define other built-in charsets (may be 'all')." @${ECHO} "     WITH_COLLATION=collate  Define default collation (latin1_swedish_ci)." @${ECHO} "     WITH_OPENSSL=yes        Enable secure connections" @${ECHO} "                             (define WITHOUT_YASSL for backward compatibility)." @${ECHO} "     WITH_LINUXTHREADS=yes   Use the linuxthreads pthread library." @${ECHO} "     WITH_PROC_SCOPE_PTH=yes Use process scope threads" @${ECHO} "                             (try it if you use libpthread)." @${ECHO} "     WITH_FAST_MUTEXES=yes   Replace mutexes with spinlocks." @${ECHO} "     BUILD_OPTIMIZED=yes     Enable compiler optimizations" @${ECHO} "                             (use it if you need speed)." @${ECHO} "     BUILD_STATIC=yes        Build a static version of mysqld." @${ECHO} "                             (use it if you need even more speed)." @${ECHO} "     WITH_NDB=yes            Enable support for NDB Cluster." @${ECHO} "

Получаем в результате ===> Cleaning for mysql-client-5.5.1 ===> Cleaning for mysql-server-5.5.1

echo 'mysql_enable="YES"' >> /etc/rc.conf /usr/local/etc/rc.d/mysql-server start mysql

 ...  По-видимому, повлияло только на character_set_system
 * character_set_client           | ascii                                                                                     |
 * character_set_connection       | ascii                                                                                     |
 * character_set_database         | latin1                                                                                    |
 * character_set_filesystem       | binary                                                                                    |
 * character_set_results          | ascii                                                                                     |
 * character_set_server           | latin1                                                                                    |
 * character_set_system           | utf8                                                                                      |
 * collation_connection           | ascii_general_ci                                                                          |
 * collation_database             | latin1_swedish_ci                                                                         |
 * collation_server               | latin1_swedish_ci

После указания UTF при сборке, изменилось состояние character_set_server и character_set_database  ...                                                    | 
 * character_set_client                   | ascii                                                                                     |
 * character_set_connection               | ascii                                                                                     |
 * character_set_database                 | utf8                                                                                      |
 * character_set_filesystem               | binary                                                                                    |
 * character_set_results                  | ascii                                                                                     |
 * character_set_server                   | utf8                                                                                      |
 * character_set_system                   | utf8                                                                                      |
 * collation_connection                   | ascii_general_ci                                                                          |
 * collation_database                     | utf8_general_ci                                                                           |
 * collation_server                       | utf8_general_ci                                                                           |

Типа базы - MyISAM

Создание базы
Новая база с именем trac CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

После создания образуется директории less /var/db/mysql/trac/db.opt default-character-set=utf8

default-collation=utf8_bin

Просмотр кодировок SHOW VARIABLES WHERE variable_name IN ('character_set_database', 'collation_database'); ++--+ ++--+ ++--+ 2 rows in set (0.00 sec)
 * Variable_name         | Value    |
 * character_set_database | utf8    |
 * collation_database    | utf8_bin |

Разрешение доступа пользователю tracuser к базе trac. Права задаются в таблице mysql/db GRANT ALL ON trac.* TO tracuser@localhost IDENTIFIED BY 'password';

Создание пользователя
GRANT ALL ON trac.* TO tracuser@localhost IDENTIFIED BY 'password';

Подключение консольным клиентом
mysql -p И ввод пароля для root-пользователя mysql

Просмотр
существующих баз данных show databases; ++ ++ ++ 10 rows in set (0.05 sec)
 * Database          |
 * information_schema | 
 * axo               | 
 * golodranec        | 
 * lols              | 
 * mysql             | 
 * r55g2             | 
 * test              | 
 * torrents          | <BR>
 * tushinec          | <BR>
 * zavodamnet        | <BR>

просмотр всех таблиц в базе данных, которая была выбрана командой use перед этим show tables;

название колонок в базе db show columns from db;

Просмотр содержимого колонки user из таблицы user select user from user;

Просмотр содержимого сразу двух колонок select user,db from db;

Выбор из таблицы значений где option_name является siteurl select * from wp_options where option_name="siteurl";

Вывести содержимое полей username,user_email у записей, где в поле user_active стоит единичка. select username,user_email from phpbb_users where user_active="1";

Запись в файл на диске SELECT `user_email` FROM `phpbb_users` GROUP BY `user_email` ORDER BY `user_email` INTO OUTFILE '/tmp/mysqlfile';

Правка данных
insert into db (host,user,db,select_priv,insert_priv,update_priv) values ('%.domain.com','john','library','Y','Y','Y');
 * Вставка

В таблице db изменить поле db, в той записи где user tracuser update db set db='trac2' where User='tracuser';
 * Изменение существующей записи

Изменение в таблице wp_options опции с именем siteurl. Имя в option_name, а само значение в option_value update wp_options set option_value="http://aero-tushino.ru" where option_name="siteurl";

Конфигурационный файл
По умолчанию /usr/local/etc/my.cnf

Примеры ls /usr/local/share/mysql/*cnf /usr/local/share/mysql/my-huge.cnf<BR> /usr/local/share/mysql/my-innodb-heavy-4G.cnf<BR> /usr/local/share/mysql/my-large.cnf<BR> /usr/local/share/mysql/my-medium.cnf<BR> /usr/local/share/mysql/my-small.cnf<BR>

Изменение кодировки после установки
cat /usr/local/etc/my.cnf [mysqld]<BR> character-set-server=utf8<BR> //не факт что надо с коллейшеном collation_server=utf8_general_ci<BR> Перезапуск /usr/local/etc/rc.d/mysql-server restart

После изменения конфигурационного файла и перезапуска сервера значения с latin1 на utf меняются у следующих переменных:
 * character_set_database         | latin1                               | <BR>
 * character_set_server           | latin1                               | <BR>
 * collation_database             | latin1_swedish_ci                    | <BR>
 * collation_server               | latin1_swedish_ci                    | <BR>

Экспорт. Резервная копия

 * Утилита mysqldump, входящая в состав дистрибутива mysql
 * Через веб-интерфейс phpmyadmin

Изменение пароля
SET PASSWORD FOR 'wikiuser'@'localhost' = PASSWORD('НОВЫЙПАРОЛЬ');

Проверка базы
mysqlcheck -c aero_tushino -p aero_tushino.wp_commentmeta                       OK

Ремонт базы
mysqlcheck -c maps -p --auto-repair Вывод Repairing tables maps.ci_sessions warning : Number of rows changed from 1824 to 1826 status  : OK

Импорт
Посредством клиента mysql create database yally;

mysql -p yally < yally020210-2122.mysql

Удаление
drop database wiki;

Engine
Каждая таблица может использовать своё engine. Модули поддерживающие ту или иную engine расположены в /usr/local/lib/mysql/plugin (?)

По умолчанию сделать innodb - default-storage-engine=innodb >> /usr/localt/etc/my.cnf

Для изменения engine у существующей таблицы можно использовать alter table supertable type=InnoDB;

Либо mysqldump и правка в полученном файле TYPE=ISAM на TYPE=INNOD. Затем испорт обратно. mysqldump --user=user --password=password --add-drop-table --databases db1 > db1.sql

--add-drop-table указывает сгенерить все таблицы.

To vastly increase the speed of the reload, add the SQL command SET AUTOCOMMIT = 0; to the beginning of the dump file, and add the COMMIT; command to the end. By default, autocommit is on, meaning that each and every insert command in the dump file will be treated as a separate transaction and written to disk before the next one is started. If you don't add these commands, reloading a large database into InnoDB can take many hours.

Возможные >show engines;  ++-++--+--++ ++-++--+--++ ++-++--+--++ </PRE>
 * Engine    | Support | Comment                                                        | Transactions | XA   | Savepoints |
 * InnoDB    | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
 * MyISAM    | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
 * BLACKHOLE | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
 * CSV       | YES     | CSV storage engine                                             | NO           | NO   | NO         |
 * MEMORY    | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
 * FEDERATED | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
 * ARCHIVE   | YES     | Archive storage engine                                         | NO           | NO   | NO         |
 * MRG_MYISAM | YES    | Collection of identical MyISAM tables                          | NO           | NO   | NO         |

В переменных имена относящихся в innodb начинаются с innodb_. То же касается и других engine.

Лог-файл
По умолчанию в /var/db/mysql/имя хоста.err

Например /var/db/mysql/yally.nonename.com.err

Переменные
http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html

>show variables;

Определенные SHOW VARIABLES LIKE 'max_join_size'; SHOW SESSION VARIABLES LIKE 'max_join_size';

Показать по шаблону SHOW VARIABLES LIKE '%size%'; SHOW GLOBAL VARIABLES LIKE '%size%';


 * general_log_file                       | /var/db/mysql/yally.log
 * hostname                               | yally.nonename.com
 * datadir                                | /var/db/mysql/
 * storage_engine                         | MyISAM

Права
Если некорректно выставлены, то отобразится сообщение Access denied for user 'tracuser'@'localhost' to database 'trac'")

Сброс root-пароля
"Access denied for user 'root'@'localhost' (using password: NO)".- не ввели пароль.

"Access denied for user 'root'@'localhost' (using password: YES)". - неверный пароль.

/usr/local/etc/rc.d/mysql-server stop mysqld_safe --skip-grant-tables & 101126 19:57:30 mysqld_safe Logging to '/var/db/mysql/shergar.ru.err'.<BR> 101126 19:57:30 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql<BR> mysql -u root Консоль mysql use mysql; update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root'; flush privileges; quit Снова командная строка /usr/local/etc/rc.d/mysql-server restart

КОпирование базы как файлов
При переносе между архитектурами файлов могут быть проблемы?

Нужно права mysql:mysql для директорий баз, иначе будут ошибки.

MyISAM is the default storage engine.

2.19.5. Copying MySQL Databases to Another Machine

You can copy the .frm, .MYI, and .MYD files for MyISAM tables between different architectures that support the same floating-point format. (MySQL takes care of any byte-swapping issues.) See Section 13.1, “The MyISAM Storage Engine”.

Разделители
grep DELI DB.sql DELIMITER ;; DELIMITER ;

delimiter str, \d str

Change the string that mysql interprets as the separator between SQL statements. The default is the semicolon character (“;”).

The delimiter string can be specified as an unquoted or quoted argument on the delimiter command line. Quoting can be done with either single quote ('), double quote ("), or backtick (`) characters. To include a quote within a quoted string, either quote the string with a different quote character or escape the quote with a backslash (“\”) character. Backslash should be avoided outside of quoted strings because it is the escape character for MySQL. For an unquoted argument, the delimiter is read up to the first space or end of line. For a quoted argument, the delimiter is read up to the matching quote on the line.