Пошаговое руководство по установке MySQL8.0

база данных MySQL

Буквально вчера утром я только что установил среду Apache2.4.33 и PHP7.2.4 для облачного сервера, и у меня будет последняя версия MySQL5.7.22. Ищем пакет rpm версии 5.7, заходим в mysql80xxx.rpm и видим, что туториал называется mysql57.Может ли быть, что 80 отсутствует в MySQL?Вышла версия 8, и MySQL выпустила официальную стабильную версию 8.0.11 2 часов назад. Джорджия). что я чувствую

- был настигнут как раз в тот момент, когда он собирался стартовать

См. рекламируемое двукратное улучшение производительности, множество новых функций, objk. Тогда давай (наступай) на машину (яму) и решительно отказывайся от MySQL 5.7 и сразу переходи на 8.

MySQL 8.0 использует новый метод аутентификации с помощью плагина пароля. 5.7 называется mysql_native_password, а 8.0 называется caching_sha2_password. Этот метод шифрования позволяет многим инструментам интерфейса (например, Navicat) или языкам программирования (например, PHP) подключаться к интерфейсу MySQL mysqli. недействителен:

Error : The server requested authentication method unknown to the client [caching_sha2_password]

Ошибка: Клиент не знает правил, по которым сервер требует аутентификацию [caching_sha2_password],

Цель:Последняя версия MySQL 8.0.11 установлена ​​как на облачном сервере Linux, так и на локальной Windows, а PHP7 можно подключить к интерфейсу mysqli одновременно.

инструмент:PuTTY используется для удаленного подключения к облачному серверу для ввода команд; клиент FileZilla отслеживает каталог файлов сервера, чтобы узнать, что делает команда.

версия для Windows

1. Загрузите сжатую ZIP-версию MySQL с официального сайта.

https://dev.mysql.com/downloads/mysql/скопировать код

2. После распаковки поместите его в любой указанный вами каталог

Например: E:\myServer\mysql-8.0.11-winx64

Содержимое нового пользовательского файла конфигурации по умолчанию my.ini выглядит следующим образом, а путь изменяется в соответствии с фактическим адресом хранилища.

[mysqld] # port 设置端口 ,若设置3306是默认端口可生路# basedir 设置MySQL的安装目录  # datadir 设置MySQL数据库的数据的存放目录port = 3380basedir=E:\myServer\mysql-8.0.11-winx64\datadir=E:\myServer\mysql-8.0.11-winx64\data# mysql8.0.11 默认值为caching_sha2_passworddefault_authentication_plugin=mysql_native_password[client]# cmd.exe MySQL命令行所用端口 与上方保持一致port = 3380# https://dev.mysql.com/doc/refman/8.0/en/connecting.htmlскопировать код

3. Введите командную строку cmd.exe от имени администратора, чтобы выполнить установку и инициализацию.

Примечание. Запустите cmd.exe от имени администратора и нажмите Enter после ввода строки инструкций.

语句解释如下,默认路径为E:\myServer请根据实际修改# 1 [跳转到MySQL主进程mysqld目录]E:cd E:\myServer\mysql-8.0.11-winx64\bin# 2 [加入windows服务,自定义名字MySQL3380]mysqld -install MySQL3380#3 [初始化将生成数据存放文件夹data,生成无密码root帐号]mysqld --initialize-insecure# 4 [启动MySQL服务]net start MySQL3380# 5 通过命令行,进入mysql控制台。默认密码为空,回车即可mysql -u root -p#--------------------------------------------# [卸载服务(未用到)]net stop MySQL3380sc delete MySQL3380скопировать код

[Вышеупомянутая демонстрация анимации инструкции.gif]


Linux-версия

Среда — облачная серверная система версии CentOS7.3, которая устанавливается с помощью Yum Repository.

[root@codenight ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)скопировать код

Обнаружено, что в системном каталоге /etc находится конфигурационный файл MySQL my.cnf (очевидно, система поставляется с ним в ноябре 2016 г.) Мы хотим знать, какой шаг будет генерировать или модифицировать my.cnf в процессе выполнения mysql -server, который сохраняется по умолчанию, содержание всего несколько строк

[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockassorted security riskssymbolic-links=0[mysqld_safe]log-error=/var/log/mariadb/mariadb.logpid-file=/var/run/mariadb/mariadb.pid!includedir /etc/my.cnf.dскопировать код

1. Загрузите файл .rpm MySQL8.0.11.

wget  https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpmскопировать код

Этот шаг загружает файл mysql80-community-release-el7-1.noarch.rpm в каталог сервера /root.

2. Установите пакет rpm

rpm -ivh mysql80-community-release-el7-1.noarch.rpm --force --nodepsскопировать код

Этот шаг создает два файла в каталоге /etc/yum.repos.d/:

mysql-community.repo

mysql-community-source.repo

3. Установите сервер mysql-сообщества

yum install mysql-community-serverскопировать код

Появится диалоговое окно для подтверждения и, наконец, Завершить!Эта команда устанавливает много

Это шаг для создания нового файла конфигурации MySQL my.cnf, основное содержание которого выглядит следующим образом, изменять его не нужно.

# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]# innodb_buffer_pool_size = 128M# log_bin# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M## 移除default_authentication_plugin前面的#, # 这样就可以兼容老旧的客户端了。有关内容请看:# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin# default-authentication-plugin=mysql_native_passworddatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidскопировать код

4. Запускаем службу mysqld и присоединяемся к загрузочному автозапуску

[root@codenight ~]# systemctl start mysqld.service[root@codenight ~]# systemctl enable mysqld.serviceскопировать код

5. Получите временный пароль для входа

[root@codenight ~]# grep 'temporary password' /var/log/mysqld.logскопировать код

Скопируйте возвращенный в нем пароль:

Совет: Если пароль неверный, скопируйте его в Блокнот и внимательно проверьте. Если это все еще не работает, вы можете использовать только черную магию (на самом деле, самая большая вероятность, что пароль скопирован неправильно), перейдите в /var/log/, чтобы загрузить mysqld.log, найти пароль внутри, изменить пользовательский пароль, загрузите mysql.log и перезапустите службу MySQL

 

6. Войдите в базу данных и введите вышеуказанный пароль

[root@codenight ~]# mysql -u root -pскопировать код

Выполнение любого оператора SQL вызовет ошибку

mysql> SHOW DATABASES;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.скопировать код

[Ошибка 1820]Напоминаем, что вы должны сбросить свой пароль с помощью ALTER USER

7. Сбросить пароль

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';ERROR 1819 (HY000): Your password does notsatisfy the current policy requirementsскопировать код

[Ошибка 1819]Подсказка, что ваш пароль не соответствует текущим требованиям политики

Причина в том, что значение по умолчанию для validate_password.policy равно 1 (промежуточная сила), за исключением того, что 8-битная длина должна содержать хотя бы одну из цифр, прописных и строчных букв и специальных символов, таких как 3ONbm

https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html#sysvar_validate_password.policyскопировать код

Если вы все еще хотите использовать простой 8-значный пароль, такой как abc54321, уменьшите значение политики

mysql> SET GLOBAL validate_password.policy=0;Query OK, 0 rows affected (0.00 sec)скопировать код

Теперь пароль изменен на 12345678

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';Query OK, 0 rows affected (0.04 sec)скопировать код

8. Откройте удаленное соединение

Мы напрямую вставляем запись в таблицу пользователей, которая применима к любому хосту, имя входа — root, а пароль — 12345678. После обновления разрешений вы можете войти удаленно и подтвердить, что группа безопасности сервера или порт 3306 были вышел.

USE mysql;INSERT INTO `user` VALUES ('%', 'root', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0', '0', 'mysql_native_password', '*84AAC12F54AB666ECFC2A83C676908C8BBC381B1', 'N', '2018-04-21 11:25:16', null, 'N', 'Y', 'Y', null, null);FLUSH PRIVILEGES;скопировать код

Посмотрите на пользователя и пароль в таблице разрешений пользователей

mysql>  SELECT host,user,plugin,authentication_string FROM mysql.user;+-----------+------------------+-----------------------+---------------------------------------------------------------------+| host      | user             | plugin                | authentication_string                                               |+-----------+------------------+-----------------------+---------------------------------------------------------------------+| %         | root             | mysql_native_password | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1                           || localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                           || localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                           || localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                           || localhost | root             | caching_sha2_password | $A$005$0qyQJPnk>R5J>~}tGo2dCdahVKfz42pCUr/3tLWJYERvir2Mr5jUUkBR2B |+-----------+------------------+-----------------------+---------------------------------------------------------------------+5 rows in setскопировать код

Примечание. Строка зашифрованного текста, сгенерированная тем же паролем 12345678, первая строка — результат собственного шифрования, пятая строка — результат шифрования sha2, в командной строке сервера используется host=localhost И user=root, а для удаленного подключения используется хост=% И пользователь=root

9. Изящная деградация

Теперь Navicat можно подключать удаленно, интерфейса mysqli, вызываемого такими языками программирования, как PHP, недостаточно, потому что MySQL 8.0.11 только позавчера была выпущена официальная версия, и эти программные интерфейсы не были написаны (последние версия PHP от 30 марта), поэтому для плагина шифрования необходимо установить значение mysql_native.

Измените /etc/my.cnf, сохраните и перезапустите сервер MySQL.

[root@codenight ~]# systemctl restart mysqld.serviceскопировать код

10. Другая связанная обработка ошибок

Например, пароль 12345678. Поле authentication_string в пользовательской таблице должно хранить зашифрованный текст, сгенерированный в соответствии с правилами, указанными в поле плагина, иначе пароль будет неверным независимо от того, что вы вводите.


Использованная литература:

[Официально] Установите MySQL с помощью репозитория Yum: https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html

CentOS7 устанавливает MySQL5.7 через YUM: https://www.cnblogs.com/jorzy/p/8455519.html

https://blog.csdn.net/wisdom_c_1010/article/details/55506081