mysql安装与使用
-
安装指定版本的mysql
# 获得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
# 安装MySQL 8 只需这步(ubuntu22.04默认php版本为8.0) sudo apt install mysql-server -y # 检查状态 sudo systemctl status mysql
-
配置mysql
-
查看初始密码位置:
sudo cat /etc/mysql/debian.cnf
-
查找配置文件:
sudo find / -name my.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
-
配置更改:
[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常用操作
-
连接数据库:
# 复制sql文件到容器(使用docker部署) sudo docker cp my_db.sql mysql-8.0:/ # 进入数据库容器(使用docker部署) sudo docker exec -it mysql-8.0 bash # 连接数据库 mysql -u root -p
-
创建并导入数据库:
-- 创建数据库 create database my_db default character set utf8 collate utf8_general_ci; -- 选择数据库 use my_db; -- 导入sql文件 source my_db.sql;
-
分配指定数据库权限:
-- 创建数据库用户 CREATE USER 'my_db_user'@'%' IDENTIFIED BY 'strong_password'; -- 分配用户指定数据库权限 grant all privileges on my_db.* to 'my_db_user'@'%'; -- 刷新权限 flush privileges;
-
分配备份数据库权限:
-- 创建专用备份账号 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;
-
导出数据库:
# 导出指定数据库 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
-