- 下载解压 mysql8
cd /usr/local/
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
tar -Jvxf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
- 修改 mysql 文件夹名,设置环境变量
mv mysql-8.0.33-linux-glibc2.12-x86_64 mysql8
vim /etc/profile
# 在最后添加如下内容:export PATH=$PATH:/usr/local/mysql8/bin
source /etc/profile
- 确认安装成功
mysql --version
- 创建用户组、用户
# 创建用户组
groupadd mysql
# 创建用户
useradd -r -g mysql mysql
- 创建数据目录
# 创建目录
mkdir -p /data/mysql8_data
# 赋予权限
chown -R mysql:mysql /data/mysql8_data
# 更改模式
chmod -R 700 /data/mysql8_data
- 修改配置文件
在/usr/local/etc/
下创建my.cnf
配置文件用于初始化MySQL
数据库
vim /usr/local/etc/my.cnf
复制以下内容到配置文件中:
[mysql]
# 默认字符集
default-character-set=utf8mb4
[client]
# 客户端使用的端口号
port=3306
# 客户端连接的 socket 路径
socket=/tmp/mysql.sock
[mysqld]
# 服务端使用的端口号
port=3306
# 服务器 ID
server-id=3306
# MySQL 运行用户
user=mysql
# 日志时间系统时间
log_timestamps=SYSTEM
# 默认时区东八区
default-time_zone='+8:00'
# 服务器连接的 socket 路径
socket=/tmp/mysql.sock
# MySQL 安装目录
basedir=/usr/local/mysql8
# 数据存放目录
datadir=/data/mysql8_data/mysql
# 开启二进制日志功能
log-bin=/data/mysql8_data/mysql/mysql-bin
# InnoDB 数据文件存放目录
innodb_data_home_dir=/data/mysql8_data/mysql
# InnoDB 日志文件存放目录
innodb_log_group_home_dir=/data/mysql8_data/mysql
# MySQL 错误日志文件路径
log-error=/data/mysql8_data/mysql/mysql.log
# 存放 MySQL 进程 ID 的文件路径
pid-file=/data/mysql8_data/mysql/mysql.pid
# 表名大小写不敏感
lower_case_table_names=1
# 服务端字符集
character-set-server=utf8mb4
# 自动提交所有事务
autocommit=1
# 跳过排它锁定
skip-external-locking
# 键缓存大小
key_buffer_size=256M
# 允许的最大数据包大小
max_allowed_packet=1M
# 表缓存
table_open_cache=1024
# 排序缓存大小
sort_buffer_size=4M
# 网络缓冲区长度
net_buffer_length=8K
# 读取缓冲区大小
read_buffer_size=4M
# 随机读取缓冲区大小
read_rnd_buffer_size=512K
# MyISAM 排序缓冲区大小
myisam_sort_buffer_size=64M
# 线程缓存大小
thread_cache_size=128
# 临时表大小
tmp_table_size=128M
# 启用显式默认时间戳
explicit_defaults_for_timestamp=true
# 最大连接数
max_connections=500
# 连接错误最大数量
max_connect_errors=100
# 打开文件限制
open_files_limit=65535
# 二进制日志格式
binlog_format=mixed
# 二进制日志过期时间(秒)
binlog_expire_logs_seconds=864000
# 创建表时使用的默认存储引擎
default_storage_engine=InnoDB
# InnoDB 数据文件路径设置
innodb_data_file_path=ibdata1:10M:autoextend
# InnoDB 缓冲池大小
innodb_buffer_pool_size=1024M
# InnoDB 日志文件大小
innodb_log_file_size=256M
# InnoDB 日志缓冲区大小
innodb_log_buffer_size=8M
# InnoDB 每次提交时刷新日志
innodb_flush_log_at_trx_commit=1
# InnoDB 加锁等待超时时间(秒)
innodb_lock_wait_timeout=50
# 事务隔离级别为读已提交
transaction-isolation=READ-COMMITTED
[mysqldump]
# 快速导出数据
quick
# 允许的最大数据包大小
max_allowed_packet=16M
[myisamchk]
# 键缓存大小
key_buffer_size=256M
# 排序缓冲区大小
sort_buffer_size=4M
# 读取缓冲区大小
read_buffer=2M
# 写入缓冲区大小
write_buffer=2M
[mysqlhotcopy]
# 交互式超时时间
interactive-timeout
- 初始化
mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure
报错
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
原因
- 新的服务器环境,上面很多依赖都没有,缺少啥就安装啥
解决
- ubuntu 系统执行以下命令
sudo apt-get update
sudo apt-get install libaio1
- 启动 mysql
# 安全后台启动 MySQL
mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
# 确认启动,第二条即 MySQL 服务
ps -ef|grep mysql
9. 登录 mysq,修改密码
# 登录 mysql
mysql -u root --skip-password
# 修改密码(替换 新密码)(单引号别删)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# 设置密码永不过期(本地)
alter user 'root'@'localhost' password expire never;
# 刷新权限
FLUSH PRIVILEGES;
- 远程连接数据库
# 选择 mysql 数据库,查看当前用户
USE mysql;
# host 字段表示可访问当前数据库的主机,目前仅本地可访问
SELECT user,host,plugin,authentication_string FROM user;
# 创建远程连接用户
CREATE user 'root'@'%';
# 设置密码(替换 密码)(单引号别删)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
# 授权用户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
# 设置密码永不过期(远程用户)
alter user 'root'@'%' password expire never;
# 刷新权限
FLUSH PRIVILEGES;
11. 开放服务器的3306端口
登录华为云,点击安全组
点击配置规则
添加规则,配置成这样点击确定
12. navicat 连接服务器 mysql
输入连接的配置信息,主机 ip 为公网 ip,点击连接测试没有问题