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
相关推荐
跨界混迹车辆网的Android工程师几秒前
实现Android图片手势缩放功能的完整自定义View方案,结合了多种手势交互功能
android·交互
wyjcxyyy6 分钟前
打靶日记-PHPSerialize
android
Seven9711 分钟前
了解Mysql优化吗?如何优化索引?
mysql
rannn_11125 分钟前
【MySQL学习|黑马笔记|Day7】触发器和锁(全局锁、表级锁、行级锁、)
笔记·后端·学习·mysql
杰克尼33 分钟前
MYSQL-175. 组合两个表
数据库·mysql
DemonAvenger35 分钟前
MySQL索引原理深度解析与优化策略实战
数据库·mysql·性能优化
poemyang9 小时前
十年大厂员工终明白:MySQL性能优化的尽头,是对B+树的极致理解
mysql·pagecache·顺序i/o·局部性原理·b tree·b+ tree
天宇_任11 小时前
Mysql数据库迁移到GaussDB注意事项
数据库·mysql·gaussdb
安卓开发者11 小时前
Android RxJava 组合操作符实战:优雅处理多数据源
android·rxjava
阿华的代码王国11 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端