MySQL 命令
MySQL 中的死锁释放 通过使用 KILL 语句来终止一个会话。如果该会话持有行锁,则在释放锁之前无法使用KILL语句结束该会话。 1. 使用命令SHOW ENGINE INNODB STATUS;…
MySQL 中的死锁释放
通过使用 KILL 语句来终止一个会话。如果该会话持有行锁,则在释放锁之前无法使用KILL语句结束该会话。
- 使用命令
SHOW ENGINE INNODB STATUS;来查看当前会话的状态并找到占用锁的线程id。 - 使用命令
SELECT * FROM information_schema.INNODB_LOCKS WHERE locked_by_thread = [线程ID],来查看当前会话所持有的锁信息。 - 选择需要杀死的线程 id,并使用命令
KILL [线程ID];来终止该会话。 - 当会话被结束时,对应的行锁也会被释放。
MySQL 0.0.0.0 监听启动
- 修改 MySQL 配置文件
Linux: /etc/mysql/my.cnf 或 /etc/my.cnf
打开配置文件后,找到 [mysqld] 部分,并修改或添加以下内容:
1[mysqld]
2bind-address = 0.0.0.0
- 默认情况下,
bind-address可能被设置为127.0.0.1,这表示 MySQL 仅监听本地回环地址。 - 将其改为
0.0.0.0后,MySQL 会监听所有网络接口。
- 重启 MySQL 服务
修改配置文件后,需要重启 MySQL 服务以使更改生效。
1sudo systemctl restart mysql
- 验证监听状态
1sudo netstat -tuln | grep 3306
如果看到类似以下输出,则说明 MySQL 正在监听所有接口:
1tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
登录 MySQL 并运行以下命令:
1SHOW VARIABLES LIKE 'bind_address';
如果返回值为 0.0.0.0,则配置成功。
- 创建远程用户
如果需要允许远程客户端连接到 MySQL,必须创建一个具有远程访问权限的用户。
1sudo mysql -u root -p
创建用户并授予权限
1CREATE USER 'root'@'%' IDENTIFIED BY '123456';
2GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
3FLUSH PRIVILEGES;
MySQL 8.0 授权远程用户登录
对于 MySQL 5.7 及以后的版本,应该使用以下步骤来为用户设置密码并授予权限:
创建用户(如果用户已存在则跳过此步骤):
CREATE USER 'root'@'%' IDENTIFIED BY 'Qwer@#1234';
授予权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
刷新权限:
FLUSH PRIVILEGES;
检查用户是否存在:如果你仍然遇到问题,可以检查 ‘root’@‘%’ 用户是否真的存在。在 MySQL 中,使用以下命令:
SELECT user, host FROM mysql.user WHERE user = 'root';
确保远程 MySQL 服务器对外开放,修改 MySQL 配置文件
通常是/etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf
修改:bind-address = 0.0.0.0
重启MySQL服务以使配置生效
sudo systemctl restart mysql