systemctl status firewalld
firewall-cmd --state
systemctl start firewalld
- 设置开机启用防火墙
systemctl enable firewalld.service
- 设置开机不启动防火墙
systemctl disable firewalld.service
systemctl disable firewalld
(1)查看防火墙的所有信息
firewall-cmd --list-all
(2)查看防火墙所有开放端口信息
firewall-cmd --list-ports
(3)查看某个端口信息(yes表示已放行,no表示未放行
)
firewall-cmd --zone=public --query-port=3306/tcp
说明:
--zone
作用域
--query-port=3306/tcp
查询端口,格式为:端口/通讯协议
(1)放行某个端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
说明:
--zone
作用域
--add-port=3306/tcp
添加端口,格式为:端口/通讯协议
--permanent
永久生效,没有此参数重启后失效
(2)放行一个端口区间
firewall-cmd --zone=public --add-port=3306-8888/tcp --permanent
删除放行端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
firewall-cmd --reload
ufw status或sudo ufw status
查看某一端口是否被监听
netstat -an | grep 端口号
sudo ufw enable
sudo ufw disable
ufw allow 3306
- 拒绝放行某个端口
ufw deny 端口号
- 删除某个放行/拒绝放行端口的规则
ufw delete allow/deny 端口号
sudo ufw reload
mysql --help|grep my.cnf
或
whereis my.cnf
一般位置为/etc/my.cnf
,准确位置以第一步查询到的为准
vi /etc/my.cnf
点击键盘的i,进入插入模式,可以编辑该文件。
(1)若[mysqld]节中有一行bind-address=127.0.0.1
则表示仅在本地环路地址127.0.0.1的3306端口监听,将其注释即可。
#bind-address=127.0.0.1
(2)在[mysqld]节中增加下面一行:(可选,若配置完成报错,则可进行这一步)
Mysql默认在本地环路地址127.0.0.1的3306端口监听,要使用外网访问需要修改配置文件。
bind-address=0.0.0.0 #全部地址或者指定的ip地址
(3)退出并保存配置
点击键盘的Esc键,并输入:wq
,退出并保存该文件。
service mysqld restart
mysql -u root -p
若未进行这一步操作,则之后操作表都需要写成mysql.user
,否则会报错:ERROR 1046 (3D000): No database selected
。
use mysql;
select user, host, authentication_string, plugin from User;
或(若没有选择mysql库)
select user, host, authentication_string, plugin from mysql.User;
查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。
grant privileges on *.* to 'user'@'host' identified by 'password';
user
:你将创建的用户名。
host
:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost
,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
。
password
:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器,但是如果使用navcat登录则必须要密码。
例如:
grant all on *.* to 'root'@'%' identified by 'root';
但是在mysql8中已经不支持
grant
命令创建并赋予权限,会报错`ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'root'' at line 1`
(1)创建用户(可远程访问使用%
)
create User 'user'@'host' identified by 'password';
或(若没有选择mysql库)
create mysql.User 'user'@'host' identified by 'password';
说明:
username
:你将创建的用户名。
host
:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost
,如果想让该用户可以从任意远程主机登陆,可以使用通配符%。
password
:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器,但是如果使用navcat登录则必须要密码。
例如:
create User 'root'@'%' identified by 'root';
create User 'student'@'localhost' identified by '123';
create User 'student'@'本机IP' identified by '123';
create User 'student'@'%' identified by '';
(2)用户授权(授予全部权限使用all
,全部数据库全部表格使用*.*
)
grant privileges on database.table to 'user'@'host';
说明:
privileges
:用户的操作权限,如select
,insert
,update
等,如果要授予所的权限则使用all
。
databasename:数据库名。
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*
表示,如*.*
。
例如:
grant all on *.* to 'root'@'%';
grant insert on studentsystem.guide to 'student'@'localhost';
注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:grant privileges on database.table to 'user'@'host' with grant option;
这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
flush privileges;
(1)删除用户数据
delete from User where Host='%';
或(若没有选择mysql库)
delete from mysql.User where Host='%';
(2)重新加载权限表数据
flush privileges;
详情见Navicat 12 for MySQL下载、安装及使用教程(https://blog.csdn.net/weixin_44222492/article/details/98775090)