离线安装 mysql
离线安装 mysql
一、ubuntu arm
- 下载安装包
- 官网地址
- 下载压缩包

- 上传压缩包
# 将本地压缩包上传至服务器 $ scp mysql-8.4.6-linux-glibc2.28-aarch64.tar.xz root@host:/root/mysql/
- 解压
# 转到压缩包目录 $ cd /root/mysql/ # 解压压缩包 $ sudo tar -xvJf mysql-8.4.6-linux-glibc2.28-aarch64.tar.xz $ sudo mv mysql-8.4.6-linux-glibc2.28-aarch64 /usr/local/mysql - 配置
- 创建数据目录
# 创建 mysql 数据目录 $ sudo mkdir -p /data/mysql/data # 创建 mysql 日志目录 $ sudo mkdir -p /data/mysql/log # 创建 mysql pid 目录 $ sudo mkdir -p /usr/local/mysql/data/ - 创建配置文件
# 转到 etc 目录 $ cd /etc # 创建配置文件 $ sudo touch my.cnf - 注意 :
my.cnf 不能随意修改名称,启动 mysql.server 会读取该配置文件(可尝试修改 mysql.server 文件)

- 写入配置
[mysqld] # 启用 mysql_native_password plugin mysql_native_password=ON # 跳过权限表 #skip_grant_tables=1 # mysql 启动用户 user=root # 绑定 IP bind-address=0.0.0.0 # 端口,为了安全不使用默认端口 port=13306 # 安装目录,没有安装到默认目录 /usr/local/mysql 下, # 使用自带的 mysql.server 脚本启动mysql服务必须配置 basedir=/usr/local/mysql log-error=/usr/local/mysql/data/mysql.err pid-file=/usr/local/mysql/data/mysql.pid # 数据目录 datadir=/data/mysql/data # 允许最大连接数 max_connections=100 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 查询日志 general_log = 1 general_log_file = /data/mysql/log/mysql.log # 慢查询日志 slow_query_log = 1 slow_query_log_file = /data/mysql/log/slow.log long_query_time = 2 # 错误日志 log_error = /data/mysql/log/error.log # 二进制日志 server_id = 1 log_bin = /data/mysql/log/mysql-bin log_bin_index=/data/mysql/log/mysql-bin.index binlog_format=MIXED binlog_expire_logs_seconds = 604800 max_binlog_size=500M [mysql] # 设置命令行客户端默认字符集 default-character-set=utf8mb4 [client] # 设置mysql客户端默认字符集 default-character-set=utf8mb4
- 创建数据目录
- 初始化 正常情况无错误信息输出
# 转到 mysql 二进制文件目录 $ cd /usr/local/mysql/bin # 初始化 mysql $ sudo ./mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=root --initialize - 启动 正常情况无错误信息输出
# 转到 support-files 目录 $ cd /usr/local/mysql/support-files # 启动 mysql $ sudo ./mysql.server start - 停止
# 转到 support-files 目录 $ cd /usr/local/mysql/support-files # 启动 mysql $ sudo ./mysql.server stop - 状态
# 转到 support-files 目录 $ cd /usr/local/mysql/support-files # 启动 mysql $ sudo ./mysql.server status - 环境变量
# 配置环境变量 $ sudo export PATH=$PATH:/usr/local/mysql/bin - 服务启动
# 拷贝启动文件 $ sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/ # 刷新单元服务 $ sudo systemctl daemon-reload # 启动服务 $ sudo systemctl start mysql - 重装
# 删除 data 目录相关文件 $ sudo rm -rf /data/mysql/data/* # 删除 log 目录相关文件 $ sudo rm -rf /data/mysql/log/* # 重新初始化 $ sudo ./mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=root --initialize # 重新启动 $ sudo ./mysql.server start - 参考
二、ubuntu(24.04) x64
- 下载安装包
- 官网地址
- 下载压缩包

- 上传压缩包
# 将本地压缩包上传至服务器 $ scp mysql-8.4.7-linux-glibc2.28-x86_64.tar.xz root@host:/root/mysql/
- 其他步骤
- 参考以上
ubuntu arm
- 参考以上
- 错误 & 处理
-
初始化错误:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory- 处理:
# 查找依赖包 $ sudo apt-cache search libaio # 安装 $ sudo apt-get install libaio1t64 # 转到目录 $ cd /usr/lib/x86_64-linux-gnu/ # 软链接 libaio.so.1 $ sudo ln -s libaio.so.1t64.0.2 libaio.so.1 - 参考
- 处理:
-
启动错误:
... * The server quit without updating PID file (/usr/local/mysql/mysqld.pid).

-
处理:
# 查看错误日志 $ cat /data/mysql/log/error.log # 问题:/tmp/mysql*,文件被其他进程占用问题 # 删除所有 mysql* 文件 $ rm -f /tmp/mysql*
-
重启:
# 删除初始化数据 $ sudo rm -rf /data/mysql/data/* # 删除初始化日志 $ sudo rm -rf /data/mysql/log/* # 重新初始化 $ sudo /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=root --initialize # 重启 $ sudo /usr/local/mysql/support-files/mysql.server start
-
-
三、重置密码
- 停止服务
# 停止 mysql $ sudo systemctl stop mysql - 启动 mysql 并跳过权限表
# 转到 bin 目录 $ cd /usr/local/mysql/bin # 启动 mysql 并跳过权限表 $ sudo ./mysqld_safe --skip-grant-tables & - 进入数据库
$ sudo ./mysql - 使用 mysql 数据库
$ use mysql; - 设置运行远程连接
$ update user set host='%' where user ='root'; - 刷新权限表
$ FLUSH PRIVILEGES; - 修改密码
# 修改密码,'root'@'%'(root:账号,%:host),'root'(新密码) $ ALTER USER 'root'@'%' IDENTIFIED BY 'root'; // 【弃用配置】 // $ update user set authentication_string='root' where user='root'; # 刷新权限表 $ FLUSH PRIVILEGES;- 注意:设置完密码登录出现错误(ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%')
# 刷新权限表 $ FLUSH PRIVILEGES; # 将密码设置为空 $ update user set authentication_string='' where user='root'; # 刷新权限表 $ FLUSH PRIVILEGES; # 重新登录(使用连接工具 navicat 无密码连接后会提示修改密码,后面可以使用修改后的密码) $ sudo ./mysql -u root -p
- 注意:设置完密码登录出现错误(ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%')
- 退出
$ exit; - 重启
$ sudo systemctl restart mysql.server.service - 开机自启
$ sudo systemctl enable mysql.server.service- 注意:非 root 账号,可能会出现:
==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon === Authentication is required to reload the systemd state. Authenticating as: apricot,,, (apricot) Password: - 解决
# 打开策略文件 $ sudo vi /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy # 修改节点(manage-units),将所有值改成(true) <action id="org.freedesktop.systemd1.manage-units"> <description gettext-domain="systemd">Manage system services or other units</description> <message gettext-domain="systemd">Authentication is required to manage system services or other units.</message> <defaults> <allow_any>yes</allow_any> <allow_inactive>yes</allow_inactive> <allow_active>yes</allow_active> </defaults> </action> # 刷新单元服务 $ systemctl daemon-reload # 重启polkit $ systemctl restart polkit; - 参考
- 注意:非 root 账号,可能会出现:
- 验证
$ sudo ./mysql -u root -p - 参考
四、导出 & 导入
- 导出
# 备份表结构、数据,输出到指定目录 $ sudo /usr/local/mysql/bin/mysqldump -u root -proot apricot_blogs > /home/mysql/apricot-blogs-bak.sql - 导入
# 进入 mysql $ sudo /usr/local/mysql/bin/mysql -u root -proot # 创建 apricot_blogs_bak 数据库 $ create database apricot_blogs_bak CHARACTER SET ="utf8mb4" COLLATE = "utf8mb4_0900_ai_ci"; # 使用数据库 $ use apricot_blogs_bak; # 导入备份表结构、数据 $ source /home/mysql/apricot-blogs-bak.sql ; # 查看数据库 $ show databases; # 退出 $ exit;
五、脚本安装
如有帮助,欢迎转载,转载请注明原文链接:https://www.cnblogs.com/study10000/p/19133673

浙公网安备 33010602011771号