MySQL 8.0 填坑历险之安装
MySQL 是当下流行的关系型数据库,搜掠了各种文章,多少有些偏差,为此来分享下我的经历;
安装环境
环境 | 版本 | 备注 |
---|---|---|
Ubuntu 18.04 | 18.04.6 LTS (Bionic Beaver) | Linux |
Kernel | 5.4.0-42-generic | |
MySQL 8.0.23 | mysql-server_8.0.23-1ubuntu18.04_amd64.deb-bundle.tar | https://downloads.mysql.com/archives/community/ |
Navicat premiu 15 | 15.0.17 | MySQL 客户端 |
安装步骤:
1、下载MySQL Debian and Ubuntu deb 安装包,然后解压文件:
tar -xvf mysql-server_MVER-DVER_CPU.deb-bundle.tar
2、安装依赖库:
sudo apt-get install libaio1
3、预配置MySQL config,通过预配置设置Root密码,注,MySQL 8.0 采用了新的加密方式,与Ubuntu 18.04 存在密码兼容问题,为此需要选择旧版密码策略,如下所示 :
sudo dpkg-preconfigure mysql-community-server_*.deb
4、通过Deb 安装包,安装MySQL 服务:
sudo dpkg -i mysql-{common,community-client-plugins,community-client-core,community-client,client,community-server-core,community-server,server}_*.deb
如果提示错误或警告缺少依赖(如libmecab2),可以通过如下去解决:
sudo apt-get -f install
5、验证MYSQL 安装,
$ mysql -V
mysql Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL)
6、常用配置文件和默认数据目录:
/etc/mysql: 所有配置文件目录
/usr/bin and /usr/sbin :所有二进制文件、库文件等目录
/var/lib/mysql # 所有数据文件和默认log 目录(通用日志、二进制binary log等)
7、修改Root 允许远程登录,注生成环境根据权限创建用户授权,当前仅是测试条件:
# 登录MySQL 服务
> mysql -u root -p
切换Database 为mysql:
> use mysql;
## 修改root 用户连接权限,允许从任意host连接server
> UPDATE `user` SET HOST = '%' WHERE USER = 'root';
## 刷新权限
> FLUSH PRIVILEGES;
测试,使用客户端连接MySQL:
### 安装遇到的问题:
1、安装后一直无法登录,提示ACCESS Denied:
解决方式:未调整允许Root 使用密码登录,参考步骤 7,;
2、Error: dpkg frontend is locked by another process
由于Update或其他的更新导致locked:
解决:
-
找到正在locking 的进程的PID:
lsof /var/lib/dpkg/lock-frontend
-
强制kill 掉Locking PID:
sudo kill -9 PID
-
移除lock 记录文件,重新配置dpkg:
sudo rm /var/lib/dpkg/lock-frontend sudo dpkg --configure -a
3、Ubuntu 18.04 localhost 使用Root 无法正常登录,
解决:参考步骤3;
MySQL 用户权限操作命令:
1、重置Root 密码:
ALTER user 'root'@'%' IDENTIFIED BY 'mysql@cool';
2、查询用户
3、创建新的MySQL 用户:
CREATE USER 'mysql01'@'%' IDENTIFIED WITH mysql_native_password BY "mysql01a"
> OK
> 时间: 0.004s
4、授权用户数据库权限,注意:grant,revoke 调整用户权限后,该用户需要重新连接MySQL数据库,新权限才会生效;
# 授权用户所有Database 所有权限
GRANT ALL PRIVILEGES ON *.* TO 'mysql01'@'%'
> OK
> 时间: 0.004s
## 授权mysql02 仅有demo database 所有表权限常用权限:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON demo.* TO 'mysql02'@'192.168.161.128'
> Affected rows: 0
测试通过指定host 连接MySQL:
测试用户mysql02 数据库权限,无法访问系统 mysql 数据库,如下所示:
mysql> select * from demo.record;
+---------+-----------+-------+
| barcode | goodsname | price |
+---------+-----------+-------+
| 001 | book | 86 |
| 002 | pen | 98 |
+---------+-----------+-------+
3 rows in set (0.00 sec)
mysql> select * from mysql.user;
ERROR 1142 (42000): SELECT command denied to user 'mysql02'@'192.168.161.128' for table 'user'
查看授予用户的权限:
-- 查询对mysql01的授权
SHOW GRANTS FOR 'mysql01'@'%';
SHOW GRANTS FOR 'mysql02'@'192.168.161.128';
参考:
1、Ubuntu 18.04 安装 MySQL 8.0
2、Installing MySQL on Linux Using Debian Packages from Oracle
3、Error dpkg frontend is locked by another process
4、MySQL 8.0 版本授权 root 远程连接,修改权限,更改加密方式
5、MySQL添加用户、删除用户、授权及撤销权限