mysql安装与使用

mysql安装与使用

安装指定版本的mysql

sh 复制代码
# 获得deb包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
# 安装deb包(中间选择5.7)
sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb
# 更新apt仓库缓存
sudo apt-get update
# 如果更新报错,缺少key,则运行下列语句,替换对应缺少的key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
# 更新后查看当前mysql的可安装版本
sudo apt-cache policy mysql-server
# 安装 mysql5.7(安装过程需要配置输入 mysql root 的password)
sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*

# 如果报错,先取消上面的安装
sudo apt --fix-broken install
# 然后安装对应的依赖
# 安装libmecab2
sudo apt install libmecab2
# 安装libaio1
sudo apt install libaio1
# 安装mysql-community-client
sudo apt install mysql-community-client=5.7*
# 再次安装 mysql 5.7
sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*

安装mysql 8.0

sh 复制代码
# 安装MySQL 8 只需这步(ubuntu22.04默认php版本为8.0)
sudo apt install mysql-server -y
# 检查状态
sudo systemctl status mysql

配置mysql

  • 查看初始密码位置:

    bash 复制代码
    sudo cat /etc/mysql/debian.cnf
  • 查找配置文件:

    bash 复制代码
    sudo find / -name my.cnf
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
  • 配置更改:

    ini 复制代码
    [mysqld]
    #port=3306
    # 服务端使用的字符集默认为utf8
    character-set-server=utf8
    # 时区配置
    default-time-zone = '+08:00'
    # 认证方式
    default_authentication_plugin=mysql_native_password
    # 连接地址
    bind-address = 0.0.0.0
    # 解决group_concant报错
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    
    [client]
    default-character-set=utf8
    # 客户端保存密码
    user = backup_user
    password = password
    host = 127.0.0.1
    # 容器中配置
    #host = mysql-8.0

4. mysql常用操作

  • 连接数据库:

    bash 复制代码
    # 复制sql文件到容器(使用docker部署)
    sudo docker cp my_db.sql mysql-8.0:/
    # 进入数据库容器(使用docker部署)
    sudo docker exec -it mysql-8.0 bash
    # 连接数据库
    mysql -u root -p
  • 创建并导入数据库:

    sql 复制代码
    -- 创建数据库
    create database my_db default character set utf8 collate utf8_general_ci;
    -- 选择数据库
    use my_db;
    -- 导入sql文件
    source my_db.sql;
  • 分配指定数据库权限:

    sql 复制代码
    -- 创建数据库用户
    CREATE USER 'my_db_user'@'%' IDENTIFIED BY 'strong_password';
    -- 分配用户指定数据库权限
    grant all privileges on my_db.* to 'my_db_user'@'%';
    -- 刷新权限
    flush privileges;
  • 分配备份数据库权限:

    sql 复制代码
    -- 创建专用备份账号
    CREATE USER 'backup_user'@'%' IDENTIFIED BY 'strong_password';
    -- 授予基础权限
    GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, PROCESS ON *.* TO 'backup_user'@'%';
    -- 如果数据库含事件调度
    GRANT EVENT ON my_db.* TO 'backup_user'@'%';
    -- 刷新权限
    FLUSH PRIVILEGES;
  • 导出数据库:

    bash 复制代码
    # 导出指定数据库
    sudo mysqldump -uroot -p my_db > ~/projectname.sql
    # 导出容器中指定数据库
    sudo docker exec mysql-8.0 mysqldump -uroot -p my_db > ~/my_db.sql
    # 导出所有数据库
    sudo mysqldump -uroot -p --all-databases > ~/all-databases.sql
    # 导出容器中所有数据库
    sudo docker exec mysql-8.0 mysqldump -uroot -p  --all-databases > ~/all-databases.sql
相关推荐
疯华整猫13 分钟前
把二十七个 init 从首帧前面搬走:用 Trae 把启动优化钉进 CI
android·性能优化·ai编程
传奇开心果1 小时前
【探秘 Jetpack Compose 框架深水区】 第8课:rememberSaveable 的边界在哪里?——Bundle、Saver 与什么值得跨进程存活
android·kotlin
Frankie_stand2 小时前
测试自动化实战指南:从脚本化、自动判据到 CI 集成的完整落地路径
android·ci/cd·自动化
恋猫de小郭3 小时前
Flutter 大小核优化又被回滚,然后又开新提案?
android·前端·flutter
Kapaseker3 小时前
领导问我 Kotlin 的 Nothing 是什么?
android·kotlin
杨凯凡3 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Decay__3 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
韩曙亮4 小时前
【错误记录】安卓 adb 调试 5037 端口占用排查 ( adb 的三层结构 | 找出本机占用 5037 的进程 )
android·数据库·adb·安卓·错误记录
瑞雪兆丰年兮4 小时前
JavaWeb-day07-MySQL(DQL&多表设计)
java·开发语言·数据库·sql·mysql·javaweb·web
三少爷的鞋5 小时前
不改变异步本质,只改变代码组织:Telegram 项目的 Kotlin 协程实践
android