plugai_updsrv/deploy/数据库部署要求.md

166 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署步骤
## 1. 安装MySQL8
### 1.1 方案一 物理机安装MySQL8
- *操作系统*
*Ubuntu20.04LTS*
如果操作系统不是Ubuntu20则需要更新MySQL官方源信息
#### 1.1.1 apt安装MySQL
```sh
$ sudo apt update && sudo apt install mysql-server
```
#### 1.1.2. 检查安装后是否启动成功
```sh
$ ps -ef | grep mysqld
mysql 65492 1 0 17:46 ? 00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
```
#### 1.1.3. 修改MySQL监听地址和端口
```sh
$ sudo netstat -alnt | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
# 编辑mysqld.cnf文件将bind-address对应的值由127.0.0.1改成0.0.0.0或局域网IP地址(端口视情况决定是否修改)
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 重启MySQL服务
$ sudo service mysql restart
```
#### 1.1.4. 创建oss用户和权限
```sh
# MySQL安装完会在/etc/mysql目录下有一个debian.cnf文件可用于本地登录并修改root密码或创建用户
$ sudo cat /etc/mysql/debian.cnf
[client]
host = localhost
user = debian-sys-maint
password = xgf1OdcBzRy0LaEP
socket = /var/run/mysqld/mysqld.sock
# 本地登录MySQL执行下面的命令行
$ mysql -udebian-sys-maint -pxgf1OdcBzRy0LaEP mysql
mysql> select host,user,plugin,authentication_string from user;
+-----------+------------------+-----------------------+-------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+------------------+-----------------------+-------------------------------------------+
| localhost | root | auth_socket | |
| localhost | mysql.session | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | mysql_native_password | *22CC5F671040F19FF9FB1E5A9B94D2576C4A1A24 |
| % | node | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------------------+-----------------------+-------------------------------------------+
4 rows in set (0.00 sec)
# 创建一个admin账户并允许远程登录, 密码是123456(生产环境请设置复杂密码)
mysql> create user 'admin'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
# 赋予oss所有权限
mysql> grant all on *.* to 'admin'@'%';
mysql> flush privileges;
# 修改root密码和口令加密方式并开启远程登录(视实际情况而定,如果无必要可以只修改密码不开启远程登录)
# host='%'表示开启远程访问如果不开启就不要这个SQL字句
mysql> update user set plugin='mysql_native_password', authentication_string='', host='%' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 重置root账户登录密码并刷新权限
mysql> alter user 'root'@'%' IDENTIFIED BY '123456'; #适用于8.x版本修改密码(设置不成功可能是需要复杂密码)
mysql> flush privileges;
# 查看账户信息
mysql> select host,user,plugin,authentication_string from user;
+-----------+------------------+-----------------------+-------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+------------------+-----------------------+-------------------------------------------+
| % | root | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.session | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | mysql_native_password | *22CC5F671040F19FF9FB1E5A9B94D2576C4A1A24 |
| % | admin | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------------------+-----------------------+-------------------------------------------+
5 rows in set (0.00 sec)
```
### 1.2 方案二 docker安装MySQL8
```sh
# 创建本地数据库目录
$ sudo mkdir -p /data/mysql/{mysql-files,conf,logs,data}
# 启动容器(设置root初始密码为123456)
$ docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --restart always \
-e TZ=Asia/Shanghai \
-v /data/mysql/mysql-files:/var/lib/mysql-files \
-v /data/mysql/conf:/etc/mysql \
-v /data/mysql/logs:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
--name mysql -d mysql:8.0.23
```
```shell
# 登录mysql终端(手动输入初始密码123456登录MySQL控制台)
$ docker exec -it mysql mysql -uroot -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.23 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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.
# 更改数据库root账户密码为123456并开启远程访问(密码可以自行修改成其他也可以保持原密码,主要是通过%符号开启root远程访问)
mysql> USE mysql;
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> FLUSH PRIVILEGES;
mysql> exit
```
## 2. 初始化数据表
将oss-manager.sql和init-data.sql文件上传到服务器/tmp目录
```shell script
# 服务器登录MySQL命令行终端执行sql文件
mysql> source /path/to/intent-system.sql
```
## 3. 解除MySQL分组查询限制
```bash
# 打开mysqld.cnf文件并在[mysqld]选项范围内加一行下面的参数(如果sql_mode已存在则去掉ONLY_FULL_GROUP_BY)
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# 重启mysql服务
$ sudo service mysql restart
```
## 4. 更改服务器/容器时区
MySQL运行服务器或容器时区改为UTC+8 (北京时间)