Веб-программинг

Интересное и полезное про PHP, JS, MySQL, PostgreSQL, Docker, Git...

Подключение к MySQL 8 из Php

Эта проблема поднимается здесь:

Простой способ:

ALTER USER myuser IDENTIFIED WITH mysql_native_password BY 'mypassword';

Если создаем нового пользователя:

CREATE USER 'your_user'@'your_server_ip ' IDENTIFIED WITH mysql_native_password BY 'your_password';

Найти дубликаты в MySQL

По одному полю
Найти дубликаты переменной x в таблице table_name:

SELECT * FROM table_name 
WHERE x IN(SELECT x FROM table_name GROUP BY x HAVING COUNT(x)>1) 
ORDER BY x

Дубликаты нескольких полей
Найти дубликаты пар (x,y) в таблице table_name:

SELECT * FROM table_name 
WHERE CONCAT(x,y) IN (SELECT CONCAT(x,y) AS z FROM table_name GROUP BY z HAVING COUNT(z)>1)

источник

3 декабря   mysql   дубли

mysqldump и игнорировать некоторые таблицы

Запустить с помощью скрипта:

#!/bin/bash
PASSWORD=XXXXXX
HOST=127.0.0.1
USER=XXXXXX
DATABASE=databasename
DB_FILE=dump.sql
EXCLUDED_TABLES=(
table1
table2
....
tableN   
)

IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
   IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done

echo "Dump structure"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data --routines ${DATABASE} > ${DB_FILE}

echo "Dump content"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info --skip-triggers ${IGNORED_TABLES_STRING} >> ${DB_FILE}
1 декабря   mysqldump

Коллизия MD5 при проверке в php

// Допустим брутфорсим пользователя
// Получили пользовательский пароль QNKCDZO
$_POST = ['pass' => 'QNKCDZO'];
$userPass = md5($_POST['pass']);

// Есть пароль в базе такого вида 240610708
$actualPassInDb = md5('240610708');

$autorizied = false;
// сделали проверку
if ($userPass == $actualPassInDb) {
	// Авторизировали пользователя
	$autorizied = true;
}
else {
	var_dump("location: /error/");
	die;
}

Обратить внимание стоит на следующее:
QNKCDZO, в MD5 = string(32) «0e830400451993494058024219903391»
240610708 = string(32) «0e462097431906509019562988736854»

php считает что это float число, а т. к. проверка только на значение, а не на тип, то получим true.
Вывод: обязательно необходимо делать проверку на тип, т. е. использовать ===

14 ноября   md5   php
7 ноября   tar   zip

Подсчитать количество строк в файле

Если например в пределах определенной даты, между 2019-09-01 и 2019-09-30 необходимо подсчитать в файлах трассировки количество ивентов, то можно применить следующую команду:

sed -n "/первая_строка/,/последняя_строка/ p" filename | wc -l

Если первой строкой является 2019-09-01 00:00:01 и искомой последней в диапазоне 2019-09-01 23:23:59, то запрос будет выглядить так:

sed -n "/2019-09-01 00:00:01/,/2019-09-01 23:23:59/ p" filename | wc -l

Если в строке несколько параметров для поиска, то необходимые строки можно найти так:

sed '/параметр_1.*параметр_2/!d' filename | wc -l
1 октября   sed   wc -l   количество строк

Узнать размер таблиц БД в MySQL

необходимо выполнить sql-запрос:

SELECT
  table_name AS `Table`,
  round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "название_бд";

На выходе получите список таблиц с размерами в мегабайтах

Ошибка Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.

Если вы делаете обновление зависимостей:

composer install --no-dev

и видите такой сообщение:

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.

исправляем ситуацию:

composer update --lock
composer install --no-dev
2019   bash   console   grep   wc   поиск
2019   git   remote set-url
Ctrl + ↓ Ранее