Ubuntu 安装 MySQL8 配置、授权、备份、远程连接

目录

  • [0100 系统环境](#0100 系统环境)
  • [0200 下载](#0200 下载)
  • [0300 安装](#0300 安装)
  • [0400 服务管理](#0400 服务管理)
    • [0401 关闭、启动、重启服务](#0401 关闭、启动、重启服务)
    • [0402 查看服务状态](#0402 查看服务状态)
  • [0500 查看配置文件](#0500 查看配置文件)
  • [0600 账号管理](#0600 账号管理)
    • [0601 添加账号](#0601 添加账号)
    • [0602 删除账号](#0602 删除账号)
    • [0603 修改密码](#0603 修改密码)
    • [0604 忘记root密码](#0604 忘记root密码)
  • [0700 自动备份](#0700 自动备份)
  • [0800 远程访问](#0800 远程访问)

0100 系统环境

shell 复制代码
[root@localhost ~]# cat /proc/version
Linux version 5.15.0-89-generic (buildd@bos03-amd64-016) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023

[root@localhost ~]#
[root@localhost ~]# getconf LONG_BIT
64 

0200 下载

https://dev.mysql.com/downloads/mysql/
https://cdn.mysql.com//Downloads/MySQL-8.2/mysql-server_8.2.0-1ubuntu22.04_amd64.deb-bundle.tar

shell 复制代码
# 下载
wget https://cdn.mysql.com//Downloads/MySQL-8.2/mysql-server_8.2.0-1ubuntu22.04_amd64.deb-bundle.tar

0300 安装

shell 复制代码
# 解压
tar xvf mysql-server_8.2.0-1ubuntu22.04_amd64.deb-bundle.tar

# 安装,注意顺序
sudo dpkg -i mysql-community-client-plugins_8.2.0-1ubuntu22.04_amd64.deb

sudo dpkg -i mysql-community-client-core_8.2.0-1ubuntu22.04_amd64.deb

sudo dpkg -i mysql-common_8.2.0-1ubuntu22.04_amd64.deb

sudo dpkg -i mysql-community-client_8.2.0-1ubuntu22.04_amd64.deb

sudo dpkg -i libmysqlclient22_8.2.0-1ubuntu22.04_amd64.deb 

sudo dpkg -i libmysqlclient-dev_8.2.0-1ubuntu22.04_amd64.deb

sudo dpkg -i mysql-client_8.2.0-1ubuntu22.04_amd64.deb

# 依赖包 如果解压出来没有libaio1这个包,那么直接用apt安装:apt install libaio1
sudo apt install libaio1

# 依赖包
sudo apt install libmecab2

sudo dpkg -i mysql-community-server-core_8.2.0-1ubuntu22.04_amd64.deb

# 这一步要设置root密码,默认root只能localhost连接
sudo dpkg -i mysql-community-server_8.2.0-1ubuntu22.04_amd64.deb

sudo dpkg -i mysql-server_8.2.0-1ubuntu22.04_amd64.deb

# 查看版本
mysql -V
# mysql  Ver 8.2.0 for Linux on x86_64 (MySQL Community Server - GPL)

0400 服务管理

0401 关闭、启动、重启服务

shell 复制代码
sudo service mysql stop
sudo service mysql start
sudo service mysql restart
# 或者
sudo systemctl stop mysql
sudo systemctl start mysql
sudo systemctl restart mysql

0402 查看服务状态

shell 复制代码
ps aux | grep mysql
# 或者
sudo service mysql status
# 或者
sudo systemctl status mysql

0500 查看配置文件

shell 复制代码
which mysql
/usr/bin/mysql
shell 复制代码
 /usr/bin/mysql --verbose --help | grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 
shell 复制代码
sudo vim /etc/mysql/my.cnf
...
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
shell 复制代码
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql
log-error   = /var/log/mysql/error.log

也可以连接到mysql查看

shell 复制代码
mysql -uroot -p
sql 复制代码
mysql> show variables like '%datadir%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)

mysql> show variables like '%log_err%';
+----------------------------+----------------------------------------+
| Variable_name              | Value                                  |
+----------------------------+----------------------------------------+
| binlog_error_action        | ABORT_SERVER                           |
| log_error                  | /var/log/mysql/error.log               |
| log_error_services         | log_filter_internal; log_sink_internal |
| log_error_suppression_list |                                        |
| log_error_verbosity        | 2                                      |
+----------------------------+----------------------------------------+
5 rows in set (0.00 sec)

0600 账号管理

0601 添加账号

sql 复制代码
# read and write
CREATE USER 'auser'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'auser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# read only
CREATE USER 'ruser'@'%' IDENTIFIED BY '123456';
GRANT SELECT ON *.* TO 'ruser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# dump
CREATE USER 'duser'@'localhost' IDENTIFIED BY '123456';
GRANT SELECT, LOCK TABLES, PROCESS ON *.* TO 'duser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

0602 删除账号

sql 复制代码
-- 添加
CREATE USER 'aaa'@'localhost' IDENTIFIED BY '123456';
-- 删除
DROP USER 'aaa'@'localhost';

0603 修改密码

sql 复制代码
ALTER USER 'auser'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '234567';
FLUSH PRIVILEGES;

0604 忘记root密码

  • 关闭服务,安全模式启动服务,跳过权限检查
shell 复制代码
# 关闭服务
sudo service mysql stop

# 安全模式启动服务,跳过权限检查
sudo mysqld_safe --skip-grant-tables &
  • 进入数据库,不用输入密码
shell 复制代码
mysql -uroot -p
sql 复制代码
--先刷新权限
flush privileges;

-- 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

--再刷新权限
flush privileges;
-- 退出
exit
  • 关闭服务,正常启动,验证
shell 复制代码
# 关闭服务
sudo service mysql stop

# 正常启动服务
sudo systemctl start mysql

mysql -uroot -p

0700 自动备份

  • 创建备份脚本
shell 复制代码
vim /usr/bin/mysql_dump.sh
  • 内容如下:
shell 复制代码
#!/bin/bash
  
name=mysql_dump_`date '+%Y%m%d_%H%M'`.sql.gz
 
mysqldump -uduser-P3306 -p123456 -B dbname | gzip > /bak/db/$name
  • 脚本授权
shell 复制代码
chmod -R 755 /usr/bin/mysql_dump.sh
  • 添加到定时任务
shell 复制代码
crontab -e
 
20 1 * * * /usr/bin/mysql_dump.sh

0800 远程访问

shell 复制代码
# 查看防火墙状态
sudo ufw status

# 关闭防火墙
sudo ufw disable

# 开启防火墙
sudo ufw enable

# 开放端口
sudo ufw allow 3306

# 立即生效
sudo ufw reload

# 查看已开放端口
netstat -ntpl
shell 复制代码
# 远程连接
mysql -hIP -u账号 -P端口 -p
相关推荐
丁总学Java4 分钟前
如何使用 maxwell 同步到 redis?
数据库·redis·缓存
爱吃南瓜的北瓜11 分钟前
Redis的Key的过期策略是怎样实现的?
数据库·redis·bootstrap
丶213612 分钟前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
一心只为学26 分钟前
Oracle密码过期问题,设置永不过期
数据库·oracle
danplus26 分钟前
node发送邮件:如何实现Node.js发信功能?
服务器·node.js·外贸开发信·邮件群发·蜂邮edm邮件营销·邮件接口·营销邮件
神即道 道法自然 如来28 分钟前
Jenkins怎么设置每日自动执行构建任务?
运维·jenkins
小光学长35 分钟前
基于vue框架的宠物销售管理系统3m9h3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
数据库
BeyondESH40 分钟前
Linux线程同步—竞态条件和互斥锁(C语言)
linux·服务器·c++
wn53141 分钟前
【Go - 类型断言】
服务器·开发语言·后端·golang
hanniuniu1342 分钟前
详细解读,F5服务器负载均衡的技术优势
运维·服务器·负载均衡