# Ubuntu 中安装卸载 Mysql 数据库
启动
Mysql
1 | service mysql start |
关闭
Mysql
1 | service mysql stop |
重启
Mysql
1 | /etc/init.d/mysql restart |
# Mysql 卸载
- 先卸载
mysql-common
1 | sudo apt-get remove mysql-common |
- 再卸载 (因为我的
Mysql是8.0)
1 | sudo apt-get autoremove --purge mysql-server-8.0 |
-
再用
dpkg --list|grep mysql查看,还剩什么就卸载什么 -
最后清除残留数据
1 | dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P |
# Mysql 安装
# 一、安装
- 更新软件库
1
sudo apt update
- 安装
Mysql服务1
sudo apt install mysql-server(这步就已经安装mysql-client)
- 安装依赖
1
2
3
4
5
6sudo apt install libmysqlclient-dev
```
### 二、检查状态
```bash
sudo netstat -tap | grep mysql
如果出现 “无此命令”,输入命令 sudo apt install netstat
# 三、设置 Root 密码
1、进入 root
1 | sudo su |
2、进入 mysql
1 | mysql |
3、配置数据库 root 权限
1 | update mysql.user set authentication_string=PASSWORD('123456'), plugin='mysql_native_password' where user='root'; |
或者
1 | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; |
如果显示密码过于简单则需要重新设置密码强度
1 | SHOW VARIABLES LIKE 'validate_password%'; |
密码的长度是由
validate_password.length决定的,但是可以通过以下命令修改
1 | set global validate_password.length=4; |
validate_password.policy决定密码的验证策略,默认等级为MEDIUM(中等), 可通过以下命令修改为LOW(低)
1 | set global validate_password.policy=0; |
# 四、配置远程连接
查看目前是否支持远程连接
1 | use mysql; |
目前只支持本地连接
更新域属性,
'%'表示允许外部访问:
1 | update user set host='%' where user ='root'; |
执行以上语句之后再执行:
1 | FLUSH PRIVILEGES; |
再执行授权语句:
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; |
FLUSH PRIVILEGES; 命令本质上的作用是:
将当前 user 和 privilige 表中的用户信息 / 权限设置从 mysql 库 ( MySQL 数据库的内置库) 中提取到内存里。
MySQL 用户数据和权限有修改后,希望在 " 不重启 MySQL 服务 " 的情况下直接生效,那么就需要执行这个命令。
通常是在修改 ROOT 帐号的设置后,怕重启后无法再登录进来,那么直接 flush 之后就可以看权限设置是否生效。
而不必冒太大风险。
# 可能存在的其它问题
执行完之后,再用 Navicat 连接 mysql ,报错如下:
1 | Client does not support authentication protocol requested by server; |
报错原因:
mysql8.0 引入了新特性 caching_sha2_password; 这种密码加密方式 Navicat 12 以下客户端不支持;
Navicat 12 以下客户端支持的是 mysql_native_password 这种加密方式;
解决方案:
- 用如下语句查看
MySQL当前加密方式
1 | select host,user,plugin from user; |
一般第一行, root 加密方式为 caching_sha2_password 。
2,使用命令将他修改成 mysql_native_password 加密模式:
1 | update user set plugin='mysql_native_password' where user='root'; |
再次连接的时候,就成功了。
# 如果还连接不上
通过以上操作后,依然无法连接上,问题可能出在了防火墙上。
1, MySQL 部署在实体服务器上解决方案如下:
a. 开放 MySQL 的端口号,默认端口号是 3306 。
b. 直接关闭防火墙(慎重操作,不建议。当然测试玩的话就随意了。。。。)
2, MySQL 部署在云计算机上的方案如下:
a. 以阿里云为例,找到实例,设置安全组,开放端口号即可。
# 关于开放端口
1 | #防火墙开放3306端口 |
大功告成