Архив заметок

MySQL

Подписаться на эту рубрику по RSS

mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

Просмотров: 6941Комментарии: 0
FreeBSDMySQL

Столкнулся намедни с проблемой аутентификации пользователя root в phpmyadmin. Версия mysql 8. Ошибки возникают следующие:

The server requested authentication method unknown to the client
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

Решений есть несколько.

1. Добавить настройку в файл my.cnf:

default_authentication_plugin=mysql_native_password

2. Авторизоваться в mysql под root в консоле и выполнить:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'пароль';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';

Первый вариант мне не помог, а вот второй да.

Бэкап MySQL+FS+CRON+FTP. Обновление.

Просмотров: 4115Комментарии: 0
FreeBSDMySQL

Когда-то была запилена статья про резервное копирование бд, некоторых папок на фтп. Помогал этому добру планировщик.

Предыдущая статейка актуальная. В новой публикации я немного извратился с уровнем компрессии. Писать много не буду, не зачем. Выкладываю код скриптов на обозрение. Если будет желание, поделитесь своими наработками.

Итак:

Читать далее...

The used table type doesn't support FULLTEXT indexes.

Просмотров: 4880Комментарии: 0
FreeBSDMybboardMySQL
Обязательно сделайте резервную копию БД перед дальнейшими действиями. В частности это касается администраторов форума MyBB(MyBulletinBoard).

Случился неприятный затык. При конвертировании типа таблицы из MYISAM в INNODB, мускул стал ругаться. INNODB не поддерживает такую индексацию. Поэтому, чтобы все-таки конвертировать табличку в INNODB надо индексы эти удалить.

Изначально у меня на одном из форумов стоял fulltext поиск, изменив его на стандартный, я думал, что проблема уйдет сама собой. Ожидания мои не оправдались и решено было выпилить индексы вручную.

Делал я все действия в консоли, хотя тоже самое можно провернуть через phpmyadmin.

Итак, погнали:

$ mysql -u root -p
Enter password:

Я залез сразу под root'ом. В целях повышения безопасности, логинитесь на сервер mysql под хозяином конкретной БД.

Далее смотрим список бд. Я например, чтобы не ошибиться в выборе базы вывожу его.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ftp                |
| mail               |
| main               |
| mybb               |
| mysql              |
| performance_schema |
| pmadb              |
| webmail            |
+--------------------+
9 rows in set (0.01 sec)

Таблица mybb. Используем ее.

mysql> use mybb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Теперь смотрим с какими параметрами была создана база, где используется fulltext:

mysql> show create table mybb_posts;
........................
| mybb_posts | CREATE TABLE `mybb_posts` (
........................
  PRIMARY KEY (`pid`),
  KEY `tid` (`tid`,`uid`),
  KEY `uid` (`uid`),
  KEY `visible` (`visible`),
  KEY `dateline` (`dateline`),
  KEY `longipaddress` (`longipaddress`),
  FULLTEXT KEY `message` (`message`)
) ENGINE=MyISAM AUTO_INCREMENT=5477 DEFAULT CHARSET=utf8 |
1 row in set (0.00 sec)

Мне нужен FULLTEXT KEY `message` (`message`). Избавимся от него.

mysql> alter table mybb_posts drop index message;
Query OK, 5427 rows affected (0.16 sec)
Records: 5427  Duplicates: 0  Warnings: 0

После чистки, табличка конвертировалась в INNODB без проблем.

Замена кодировки для всех таблиц

Просмотров: 3308Комментарии: 0
MySQL

Понадобилось мне сменить кодировочку для таблиц из одной БД. Все бы ничего, это в принципе можно сделать с помощью phpmyadmin, но есть одна проблема. Смену кодировки можно забубенить только отдельно для каждой таблицы, а у меня их было за 60.

Можно естессно накатать запрос, но я не гений mysql да и вообще языка sql.

Пришлось прибегнуть к помощи гугла и найти скриптик для выполнения этого действа:

<?php
$db = mysql_connect('localhost','myuser_mydbuser','mypassword');
if(!$db) echo "Cannot connect to the database - incorrect details";
mysql_select_db('myuser_mydbname'); $result=mysql_query('show tables');
while($tables = mysql_fetch_array($result)) {
foreach ($tables as $key => $value) {
mysql_query("ALTER TABLE $value COLLATE utf8_general_ci");
}}
echo "The collation of your database has been successfully changed!";
?>
  • myuser_mydbname - имя вашей бд;
  • myuser_mydbuser - имя пользователя бд;
  • mypassword - пароль пользователя бд;
  • utf8-general_ci кодировка на которую надо поменять таблички;

Сохраняете файло на сервере, в браузере пишем https://ваш_адрес_сайта/collate.php

И наслаждаемся результатом.

Бэкап MySQL+планировщик cron и отправка на FTP

Просмотров: 8932Комментарии: 1
НовостиFreeBSDMySQL
Дошли руки до резервного копирования. Раньше копировал вручную необходимые данные smile Конечно это прошлый век, но так как сервер не используется в продуктиве, я особо не парился.

Теперь же захотелось попробовать автоматический бэкап баз данных, файловой системы, вернее отдельных каталогов, в которых находятся важные конфиги, и дальнейшей отправки всего этого хозяйства на сторонний ftp серверок. Плюс к этому добавить в планировщик задания, дабы все это дело происходило без моего вмешательства.

Источники для этого я использовал этот и этот. Ничего не украл, просто немного допилил для себя, чтобы все работало без запинки. Итак пример конфигов. Читать далее...

MariaDB замена MySQL

Просмотров: 7792Комментарии: 2
FreeBSDMySQL

Всем привет! В перерыве от подготовки к экзамену нагуглил интересную инфу.

На недавно прошедшей DevConf выступал с докладом Michael “Monty” Widenius, автор и идейный вдохновитель MySQL. Он рассказал про то, что Oracle потихоньку убивает MySQL и презентовал форк под названием MariaDB.
Источник.

И решил поставить Машку вместо обычного мускула. Итак, сразу к делу. Да, я добавлю маленькое примечание к публикации. Я заменял существующую СУРБД MySQL на MariaDB. Принципиального различия в установке нет. По ходу разберемся «что к чему»:

  1. Делаем для себя удобным способом дамп нужных бд. Я делал через phpmyadmin.
  2. Останавливаем мускул. Я еще на всякий вырубил вэб и php-fpm.
  3. # /usr/local/etc/rc.d/mysql-server stop
    Stopping mysql.
    Waiting for PIDS: 1038.
    #
  4. Привел для примера, если кто не знает как это делать smile  Ищем, что у нас установлено от мускула, т.к. надо удалить его Читать далее...

Mysql dump. Дамп базы.

Просмотров: 3947Комментарии: 2
FreeBSDMySQL

Инфы по этому поводу полно. Ниже бэкап базы из консоли, в данном случае FreeBSD:

$mysqldump -u dbuser -p -h dbhost dbname | gzip -9 > dbname.sql.gz

Так, на всякий случай значени ключей:

  • u - имя пользователя от БД.
  • p - пароль [вводите пароль от базы после ввода строки дампа]
  • h - адрес или ip адрес хоста БД [в данном примере dbhost]
  • dbname - вводите имя базы
  • gzip -9 - сжатие, в данном случае цифра это уровень сжатия, чем больше тем выше.
  • dbname.sql.gz - имя архива, можете ввести свое