# 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端口 |
大功告成