Ubuntu下 mysql安装与使用

📅 2026/7/16 19:18:03
Ubuntu下 mysql安装与使用
文章目录Ubuntu下 mysql安装与使用1. 安装指定版本的mysql2. 安装系统自带版本3. 配置mysql4. mysql常用操作4.1. 连接数据库4.2. 创建用户并授权4.3. 创建并导入数据库4.4. 分配备份数据库权限4.5. 导出数据库Ubuntu下 mysql安装与使用1. 安装指定版本的mysql# 获得deb包wgethttps://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb# 安装deb包(中间选择5.7)sudodpkg-imysql-apt-config_0.8.12-1_all.deb# 更新apt仓库缓存sudoapt-getupdate# 如果更新报错缺少key则运行下列语句替换对应缺少的keysudoapt-key adv--keyserverkeyserver.ubuntu.com --recv-keys 467B942D3A79BD29# 更新后查看当前mysql的可安装版本sudoapt-cachepolicy mysql-server# 安装 mysql5.7(安装过程需要配置输入 mysql root 的password)sudoaptinstall-fmysql-client5.7* mysql-community-server5.7* mysql-server5.7*# 如果报错,先取消上面的安装sudoapt--fix-brokeninstall# 然后安装对应的依赖# 安装libmecab2sudoaptinstalllibmecab2# 安装libaio1sudoaptinstalllibaio1# 安装mysql-community-clientsudoaptinstallmysql-community-client5.7*# 再次安装 mysql 5.7sudoaptinstall-fmysql-client5.7* mysql-community-server5.7* mysql-server5.7*2. 安装系统自带版本# 安装MySQL 8 只需这步ubuntu22.04默认php版本为8.0sudoaptinstallmysql-server-y# 检查状态sudosystemctl status mysql3. 配置mysql查看初始密码位置sudocat/etc/mysql/debian.cnf查找配置文件sudofind/-namemy.cnfsudovim/etc/mysql/mysql.conf.d/mysqld.cnf配置更改[mysqld] # 绑定端口 port3306 # 服务端使用的字符集默认为utf8 character-set-serverutf8 # 时区配置 default-time-zone 08:00 # 认证方式 default_authentication_pluginmysql_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 # Binlog 配置 server-id 1 log_bin mysql-bin binlog_expire_logs_seconds 604800 max_binlog_size 512M sync_binlog 1 [mysql] # 设置mysql客户端默认字符集 default-character-setutf8 [client] default-character-setutf8 # 客户端保存密码 user backup_user password password host 127.0.0.1 # 容器中配置 #host mysql-8.04. mysql常用操作4.1. 连接数据库# 复制sql文件到容器(使用docker部署)sudodockercpmy_db.sql mysql-8.0:/# 进入数据库容器(使用docker部署)sudodockerexec-itmysql-8.0bash# 连接数据库mysql-uroot-p4.2. 创建用户并授权usemysql-- 查看用户信息selecthost,userfromuser;-- 创建数据库用户CREATEUSERmy_db_userlocalhostIDENTIFIEDBYstrong_password;-- 修改用户密码ALTERUSERmy_db_userlocalhostIDENTIFIEDBYnew_password;-- root 用户是通过其他主机如 %连接ALTERUSERmy_db_user%IDENTIFIEDBYnew_password;-- 删除用户dropuserusernamehost;-- 授权grantprivilegesCodeondbName.tableNametousernamehost;-- 分配用户指定数据库权限所有权限grantallprivilegesonmy_db.*tomy_db_user%;-- 授数据库所有表所有权限grantallprivilegeson*.*tousername%;-- 刷新权限FLUSHPRIVILEGES;4.3. 创建并导入数据库-- 创建数据库createdatabasemy_dbdefaultcharactersetutf8collateutf8_general_ci;-- 选择数据库usemy_db;-- 导入sql文件source my_db.sql;-- 删除数据库dropdatabasemydb;4.4. 分配备份数据库权限-- 创建专用备份账号CREATEUSERbackup_user%IDENTIFIEDBYstrong_password;-- 授予基础权限GRANTSELECT,SHOWVIEW,TRIGGER,LOCKTABLES,PROCESSON*.*TObackup_user%;-- 如果数据库含事件调度GRANTEVENTONmy_db.*TObackup_user%;-- 刷新权限FLUSHPRIVILEGES;参数说明privilegesCode表示授予的权限类型常用的有以下几种类型all privileges所有权限。select读取权限。delete删除权限。update更新权限。create创建权限。drop删除数据库、数据表权限。dbName.tableName表示授予权限的具体库或表常用的有以下几种选项.授予该数据库服务器所有数据库的权限。dbName.授予dbName数据库所有表的权限。dbName.dbTable授予数据库dbName中dbTable表的权限。usernamehost表示授予的用户以及允许该用户登录的IP地址。其中Host有以下几种类型localhost只允许该用户在本地登录不能远程登录。%允许在除本机之外的任何一台机器远程登录。192.168.52.32具体的IP表示只允许该用户从特定IP登录。4.5. 导出数据库# 导出指定数据库sudomysqldump-uroot-pmy_db~/projectname.sql# 导出容器中指定数据库sudodockerexecmysql-8.0 mysqldump-uroot-pmy_db~/my_db.sql# 导出所有数据库sudomysqldump-uroot-p--all-databases~/all-databases.sql# 导出容器中所有数据库sudodockerexecmysql-8.0 mysqldump-uroot-p--all-databases~/all-databases.sql