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
相关推荐
运维潇哥2 小时前
二进制安装指定版本的MariaDBv10.11.6
adb
weixin_466485113 小时前
qt5中使用中文报错error: C2001: 常量中有换行符
android·java·qt
苏柘_level63 小时前
【Android14】Android系统内置第三方应用时OpenSSL版本冲突的深度解析与解决方案优化
android
wd 673 小时前
sql注入拿shell
android·数据库·sql
安防视频中间件/视频资源汇聚平台4 小时前
svmspro如何切换数据库
数据库·mysql·sqlite·达梦·人大金仓·瀚高·svmspro
月熊4 小时前
MySQL小练习
数据库·mysql
XZ-0700015 小时前
MySQL(第3周)-database命令
数据库·mysql
TechStack 创行者5 小时前
基于Alpine构建MySQL 10.11.11镜像的完整教程
运维·数据库·mysql·docker
try again!5 小时前
个性化音乐推荐系统
android·数据库·sqlite