前言

因为最近有一些原因打算把MySQL数据库迁移到Ubuntu服务器中结果各种坑,为此记录一下方便日后开发

安装MySQL

1
sudo apt-get install mysql-server

MySQL服务管理命令

1
2
3
4
sudo service mysql status # 查看服务状态
sudo service mysql start # 启动服务
sudo service mysql stop # 停止服务
sudo service mysql restart # 重启服务

卸载MySQL

1
2
sudo apt purge mysql*
sudo rm -rf /etc/mysql/ /var/lib/mysql

忘记账号密码

1
2
3
4
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 在[mysqld]段下加入 skip-grant-tables
sudo service mysql restart
# 然后输入 mysql登录

查询 user表 查看所有的 user 信息

1
select user,authentication_string,plugin,host from mysql.user;

查询以开放的端口号

1
show global variables like 'port';

修改账户密码

1
2
3
4
5
6
7
# 如果忘记了账户密码 需要在mysqld.cnf配置文件的 [mysqld] 段下加 skip-grant-tables
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 在[mysqld]段下加入 skip-grant-tables
# 然后重启MySQL服务后输入 mysql 即可免密登录
# 不能直接修改密码,会报错。要先清空root密码:
update user set authentication_string='' where user='root';
flush privileges;

开始操作

登录自带的临时账号

1
2
sudo cat /etc/mysql/debian.cnf
mysql -u debian-sys-maint -p

新建一个root账户来日用

1
2
3
-- "%"表示允许任何方式连接该账户
create user 'root'@'%' identified by '123456'; #密码123456
FLUSH PRIVILEGES;

重新登录root账户

1
mysql -u root -p

授权所有IP允许远程连接root账户并具有修改权限

1
2
3
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 重新登录root账号

取消绑定本地登录

1
2
3
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
#注释掉bind-address
bind-address = 127.0.0.1

编辑策略开放服务器远程3306端口(tcp协议)

参考文章

Ubuntu20.04上安装MySQL8.0(绝对保证能够正常使用)
Ubuntu 搭建 MYSQL数据库
MySQL 8 如何修改密码