Рубрики
Uncategorized

Компиляция исходного кода CentOS 7 и установка MySQL 5.7

Автор оригинала: David Wong.

I. Подготовка к установке

  • Официальный сайт MySQL https://www. mysql .com/
  • Страница загрузки MySQL https://dev.mysql.com/downloa…

Скачать MySQL

На странице загрузки MySQL выберите версию MySQL.

  1. Выбранная версия Сервер сообщества MySQL 5.7.23
  2. Выбор Исходный код
  3. Выбор Универсальный Linux (Не зависит от Архитектуры)
  4. Выберите версию boost mysql-boost-5.7.23.tar.gz
  5. Скопировать Адрес Ссылки

Скачать MySQL

yum -y install wget
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.23.tar.gz

III. Зависимость от окружающей среды

Зависимости среды, необходимые для установки MySQL в исходном режиме:

  • cmake
  • делать
  • ссагпз
  • gcc-c++
  • бизон
  • проклятия
  • Ncurses-devel (devel-это версия для разработки)
yum -y install cmake make gcc gcc-c++ bison ncurses ncurses-devel

IV. Установка MySQL

1. Распакуйте пакет MySQL

tar -zxvf mysql-boost-5.7.23.tar.gz
cd mysql-5.7.23/

2. Создайте каталоги компилятора

mkdir configure
cd configure

3. Создание Среды Компилятора

cmake .. -DWITH_BOOST=../boost/boost_1_59_0/ -DWITH_EMBEDDED_SERVER=OFF

Результат:

-- Configuring done
-- Generating done
-- Build files have been written to: /root/mysql-5.7.23/configure

Потенциальные проблемы:

  • Вопрос 1
MySQL currently requires boost_1_59_0...

Решение: Поскольку загруженную версию с boost нужно только правильно указать -WITH_BOOST Параметры следующие

-DWITH_BOOST=../boost/boost_1_59_0/

Если у вас нет версии boost, вам нужно загрузить ее и переместить в распакованный каталог mysql-5.7.23. При создании скомпилированного файла укажите правильный. –WITH_BOOST Параметры могут быть

wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download
tar -zxvf boost_1_59_0.tar.gz
mv boost_1_59_0 mysql-5.7.23

Или укажите параметры cmake, и система сама их загрузит

-DDOWNLOAD_BOOST=1 -DWITH_BOOST 
  • Вопрос 2
Make [2]: *** [libmysqld/examples/mysql_client_test_embedded] error 1
Make [1]: *** [libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/all] error 2

Решение: Добавьте следующие параметры

-DWITH_EMBEDDED_SERVER=OFF

4. Скомпилируйте и установите

Весь процесс может занять некоторое время и терпение.

make && make install

5. Создайте группы пользователей и пользователей MySQL

groupadd mysql
useradd -g mysql mysql

6. Настройка разрешений

Каталог установки MySQL – /usr/локальный/mysql

chown -R mysql:mysql /usr/local/mysql

7. Инициализация базы данных

cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql

2018-07-29T19:09:18.304497Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-07-29T19:09:18.536280Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-07-29T19:09:18.586523Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-07-29T19:09:18.649604Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e49ee151-9362-11e8-ab75-08002739fe2b.
2018-07-29T19:09:18.653045Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-07-29T19:09:18.653886Z 1 [Note] A temporary password is generated for [email protected]: A,uNFfDrd1yd

Результат: Временный пароль. Это должно быть записано. 。 И есть предупреждение.

TIMESTAMP with implicit DEFAULT value is deprecated。

Решать:

vim /etc/my.cnf

Отредактируйте файл конфигурации, а затем explicit_defaults_for_timestamp=true Напишите в него.

8. Добавление Mysql в системные службы

cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysql
Chkconfig -- add MySQL # join system services
Chkconfig MySQL on # boot-up

9. Попробуйте открыть службу MySQL

service mysql start

Возникшие проблемы заключаются в следующем:

Starting MySQL.2018-07-30T01:14:39.000931Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
 ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

Решение: Создайте этот файл

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/mariadb.log

Снова откройте службу MySQL

[[email protected] support-files]# service mysql start
Starting MySQL. SUCCESS!

Услуга успешно открыта!

10. Войдите в MySQL

[[email protected] support-files]# mysql -u root -p
- bash: mysql: No command found

Решите проблему отсутствия команд

Создание мягких ссылок

ln -s /usr/local/mysql/bin/mysql /usr/local/bin

Результат:

[[email protected] ~]# ll -a /usr/local/bin
Total dosage 0
Drwxr-xr-x.2 root 19 July 30 16:36.
Drwxr-xr-x.15 root 169 July 3002:58..
Lrwxrwxrwx. 1 root 26 July 30 16:36 MySQL - > / usr / local / MySQL / bin / MySQL

Войдите в систему еще раз:

Возникают проблемы
[[email protected] ~]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Растворитель

поиск mysql.sock Документ, найденный в /var/lib/mysql/ В каталоге.

[[email protected] ~]# find / -name 'mysql.sock'
/var/lib/mysql/mysql.sock

Посмотрите еще раз на файл конфигурации my.cnf

[mysqld]
  2 datadir=/var/lib/mysql
  3 socket=/var/lib/mysql/mysql.sock
  4 explicit_defaults_for_timestamp=true

Как вы можете видеть из файла конфигурации сокет Значение /var/lib/mysql/mysql.sock Затем вы можете создавать мягкие ссылки на /tmp/mysql.sock

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
Повторный вход в MySQL

Если сгенерированный временный пароль не записан при инициализации базы данных, то вам придется “Насильственное взлом” Сейчас.

Во-первых, закройте службу MySQL

service mysql stop

Затем измените /etc/my.cnf Добавить пропустить-предоставить-таблицы Следующим образом

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

skip-grant-tables

Затем войдите в систему без секрета и измените пароль для входа

mysql
# Set account password and exit
update user set authentication_string=password('PASSWORD') where user='root';
flush privileges;

Наконец, будет /etc/my.cnf Medium пропустить-предоставить-таблицы Удалить или прокомментировать.

Перезапустите службу и войдите в систему с паролем

[[email protected] support-files]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.23

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Запрос на сброс автоматически сгенерированного пароля:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

Измените пароль пользователя root

mysql> alter user 'root'@'localhost' identified by '123123';
Query OK, 0 rows affected (0.00 sec)

возможно

mysql> set password for [email protected]=password('123123');
Query OK, 0 rows affected, 1 warning (0.00 sec)

Повторный вход в MySQL

mysql> exit
Bye
[[email protected] ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.23 Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Операционная база данных

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql>

Пять, краткое изложение

Хорошая память не так хороша, как плохая ручка. Вы должны привыкнуть записывать.