虚拟机版本:Ubuntu18.04
由于本人经历了无数次MySQL的安装,无论是win下还是Linux下,每次都遇到各种各样的问题,再加上csdn上的教程很乱,没有系统的,基于此写下这篇博客,这篇博客的内容本人亲自运行了两次,没有遇到任何问腿,请各位放心食用。
sudo apt-get update
sudo apt-get install mysql-server
sudo apt-get install mysql-client
mysql-server 是MySQL核心程序将安装MySQL数据库服务器,用于生成管理多个数据库实例,持久保存数据并为其提供查询接口(SQL),供不同客户端调用。
mysql-client 是操作数据库实例的工具,允许连接到MySQL服务器使用该查询接口。它将为您提供MySQL命令行程序。
如果只需要连接到远程服务器并运行查询,只安装mysql-client就可以了。如果是服务器只提供连接服务的只需要安装mysql-server。
运行MySQL初始化安全脚本
sudo mysql_secure_installation
mysql_secure_installation脚本设置的东西:更改root密码、移除MySQL的匿名用户、禁止root远程登录、删除test数据库和重新加载权限。询问是否要更改root密码时,看情况是否需要更改;循环是否禁止远程登录时,要输入NO,否则会导致后面用navicat远程连接mysql失败。其余的问题直接回车,使用上面的这些选项可以提高MySQL的安全。
systemctl status mysql.service
会得到以下输出
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-01-20 16:45:25 CST; 25min ago
Main PID: 20955 (mysqld)
Tasks: 28 (limit: 4624)
CGroup: /system.slice/mysql.service
└─20955 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
1月 20 16:45:24 xuyifeng-virtual-machine systemd[1]: Starting MySQL Community Server...
1月 20 16:45:25 xuyifeng-virtual-machine systemd[1]: Started MySQL Community Server.
sudo service mysql start
或
sudo systemctl start mysql.service
sudo service mysql enable
或
sudo systemctl enable mysql.service
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
打开配置文件,找到bind-address = 127.0.0.1这一行
改为bind-address = 0.0.0.0即可或简单一点注释掉也行
修改完成保存后,需要重启MySQL服务才会生效
MySQL安装好时,无法用root进行登录,只能先用MySQL初始的系统账户登录。
查看MySQL初始系统账户和密码:
sudo cat /etc/mysql/debian.cnf
登录进去后,就需要创建root用户
因为我们习惯创建root用户时设的密码是123456或者root,但会报以下错误
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
意思是我们设的密码不符合MySQL密码的规则,那么我们就可以直接把这个规则删掉,当然这里有其他办法,详情可见这篇博客
mysql> uninstall plugin validate_password;
现在,我们就可以创建root用户啦
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
然后刷新权限
flush privileges;
如果按我上面安装的过程来的话,这里是会报错的。。。错误提示如下
这里就说明我们没法连接MySQL,需要解决问题
这里解决方法就在上面配置MySQL时没有配置好,需要重新配置。具体可看上面的配置MySQL这一步。
sudo mysql_secure_installation
输出中有一个提示会询问你是否禁止远程登录时,要输入NO,其余的回车即可。
win+r输入cmd进入dos命令行,测试与虚拟机的网络连通性
查看mysql账户是否不允许远程连接
mysql -u root -p
use mysql;
show databases;
select host,user from user;
可以看到mysql已经设置允许远程连接
若root用户显示host为localhost 则需要授权 root 用户的所有权限并设置远程访问
可以通过修改表来实现远程
update user set host = '%' where user = 'root';
select host, user from user;
如果是刚建好的虚拟机,应该是不带防火墙的,需要先安装
sudo apt install firewalld
接下来查看防火墙的端口
sudo firewall-cmd --list-ports
这里我是显示3306的端口是开放的,因为之前配置好了。所以你们电脑上的显示应该是没有3306这个端口的,所以需要给他打开。
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
成功打开会显示success,然后我们需要重新加载防火墙
sudo firewall-cmd --reload
现在,我们查看下防火墙的端口,就会显示3306端口打开了
sudo firewall-cmd --list-ports
按照信息填好,点击测试连接,显示连接成功,点击确认就好了~