remote Mysql install


Установка      https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04

# Для того чтобы установить 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 содержится в файле /etc/mysql/my.cnf.

Доступ к серверу из сети

По умолчанию сервер 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