# Для того чтобы установить MySQL сервер выполните команду:
apt-get install -y mysql-server
# reset policy
uninstall plugin validate_password;
# вход под рутом & change root pass
mysql --defaults-file=/etc/mysql/debian.cnf
ALTER USER 'root'@'%' IDENTIFIED BY '1';
# for mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1';
# remote acsess
USE mysql;
UPDATE user SET Host = '%' WHERE User = 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
SELECT user,host FROM mysql.user;
exit
# открываем доступ к БД по сети
sudo sed -i 's/bind-addres.*=.*127.0.0.1/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo /etc/init.d/mysql restart
# new user создание пользователя + БД
CREATE DATABASE wpdb01 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;;
CREATE USER 'wpdb01'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
GRANT ALL PRIVILEGES ON wpdb01.* TO 'wpdb01'@'localhost';
FLUSH PRIVILEGES;
# сменить пароль админу
mysqladmin -u root -p1 password NEWPASSWORD
# OR
mysql_secure_connection
# не пробовал
update user set authentication_string=password('NEWPASSWORD') where user='root';
flush privileges;
# reset root password
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql
UPDATE mysql.user SET Password=PASSWORD('PASSWORD') WHERE User='root';
FLUSH PRIVILEGES;
exit;
mysqladmin -u root -p shutdown
/etc/init.d/mysql start
# удаление дублированя рута, чтобы назначать привилегии !!!! возможно слетит пароль старого рута
use mysql;
select host, user, grant_priv from user where user = 'root';
delete from user where user = 'root' and host = 'localhost' and grant_priv = 'N';
##
delete from user where host='localhost' and user = 'root'
# пересоздать пользователя
mysql --defaults-file=/etc/mysql/debian.cnf
drop user 'root'@'localhost';
create user 'root'@localhost identified by '1';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost';
FLUSH PRIVILEGES;
EXIT;
По умолчанию сервер MySQL принимает соединения только с локальной машины. Для того, чтобы разрешить подключаться к нему с других машин замените строку
bind-address = 127.0.0.1
на
echo "bind-address = 0.0.0.0" >> /etc/mysql/my.cnf
#разрешить подключатся с любого хоста
bind-address = 0.0.0.0
#разрешить подключатся только с указанного IP
bind-address = 192.168.1.23
Про конфиги
apt-get remove --purge mysql-server mysql-client mysql-common -y
apt-get autoremove -y
apt-get autoclean
# создает mysql_all_users_sql.sql с привилегиями пользователей
# пароли нужно создавать новые т.к. они хешированы и восстановить их нельзя
PASS=YOURPASSWORD
#
mysql -B -N -uroot -p$PASS -e "SELECT CONCAT('\'', user,'\'@\'', host, '\'') FROM user WHERE user != 'debian-sys-maint' AND user != 'root' AND user != ''" mysql > mysql_all_users.txt
while read line; do mysql -B -N -uroot -p$PASS -e "SHOW GRANTS FOR $line"; done < mysql_all_users.txt > mysql_all_users_sql.sql
sed -i 's/$/;/' mysql_all_users_sql.sql
# mariadb for low memory usage
key_buffer_size = 8M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
sort_buffer_size = 2M
thread_stack = 256K
join_buffer_size = 128K
query_cache_limit = 1M
query_cache_size= 16M