Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
log_slow_verbosity=microtime,query_plan,innodb
# QC_Hit: No Full_scan: Yes Full_join: Yes Tmp_table: Yes Tmp_table_on_disk: Yes
# Filesort: No Filesort_on_disk: No Merge_passes: 0
log_slow_filter=full_join,tmp_table_on_disk,filesort_on_disk
[!!] Joins performed without indexes: 713
users_db_view() {
HISTFILE=/dev/null
echo -n "DB PASS:"
read DBPASS
mysql -uroot -p$DBPASS -Bs -e "$(mysql -uroot -p$DBPASS -Bs -e "select Distinct CONCAT('show grants for ', '\`',user,'\`', '@', '\`',host,'\`',';') as query from mysql.user;")" | awk '{print $0,";"}'
unset DBPASS
}
users_db_view
CREATE USER 'your_user'@'localhost' IDENTIFIED BY '*MD5-HASH';
GRANT USAGE ON *.* TO 'user'@'host' IDENTIFIED BY PASSWORD '*MD5-HASH'
Если такого пользователя в новой базе нет — он создается автоматически.mysql -u root -pPASSWORD -B -N -e "SELECT DISTINCT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') AS t1 FROM mysql.db WHERE db LIKE 'DBNAME' " | mysql -u root -pPASSWORD | sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}' > sys_DBNAME.sql ; echo "FLUSH PRIVILEGES;" >> sys_DBNAME.sql ; mysql -u root -pPASSWORD -B -N -e "SELECT DISTINCT CONCAT('INSERT INTO mysql.db VALUES (\'', Host, '\',\'', Db, '\',\'', User, '\',\'', Select_priv, '\',\'', Insert_priv, '\',\'', Update_priv, '\',\'', Delete_priv, '\',\'', Create_priv, '\',\'', Drop_priv, '\',\'', Grant_priv, '\',\'', References_priv, '\',\'', Index_priv, '\',\'', Alter_priv, '\',\'', Create_tmp_table_priv, '\',\'', Lock_tables_priv, '\',\'', Create_view_priv, '\',\'', Show_view_priv, '\',\'', Create_routine_priv, '\',\'', Alter_routine_priv, '\',\'', Execute_priv, '\',\'', Event_priv, '\',\'', Trigger_priv, '\') ON DUPLICATE KEY UPDATE Db=Db ;') AS query FROM mysql.db WHERE db LIKE 'DBNAME'" >> sys_DBNAME.sql
А в чем вообще проблема переноса пользователей? Чем она отличается от переноса данных?
Кроме другого имени хоста и айпишника, ничего в голову не приходит. Но в примере везде localhost, значит проблема в другом. В чем же?
Перенос пользователей и их привилегий в MySQL