MySQL 常用命令
huty
2022年11月15日 · 阅读 1,230
服务相关
启动 MySQL 服务
service mysqld start
关闭 MySQL 服务
service mysqld stop
重启 MySQL 服务
service mysqld restart
查看 MySQL 状态
service mysqld status
实例相关
查看实例信息
查看版本
mysql -V
mysql --version
select version();
查看帮助信息
mysql -?
mysql --help
mysql -I
大小写相关
查看大小写配置
show variables like '%lower%';
当输出信息中的 lower_case_table_names
为 1
时表示忽略大小写
修改大小写配置
编辑 MySQL 配置文件,在 [mysqld]
中加入 lower_case_table_names = 1
配置项。
字符集相关
查看字符集配置
show variables like '%char%';
修改字符集配置
- 编辑 MySQL 配置文件
- 在
[client]
中加入default-character-set = utf8mb4
- 在
[mysqld]
中加入character-set-server = utf8mb4
和collation-server = utf8mb4_general_ci
示例如下:
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
刷新权限
flush privileges;
或
mysqladmin flush-privileges
或
mysqladmin reload
配置免密登录
方式一:
- 编辑 MySQL 的配置文件
- 在
[mysqld]
中加入skip-grant-tables
- 重启 MySQL 服务
方式二:
- 停止 mysqld 服务
net stop mysqld
- 执行以下命令
mysqld --skip-grant-tables
- 使用新 Shell 连接 MySQL
设置 SQL_MODE
SQL_MODE 说明
- ONLY_FULL_GROUP_BY
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中 - NO_AUTO_VALUE_ON_ZERO
该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。 - STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务中,则中断当前的操作,对非事务表不做限制 - NO_ZERO_IN_DATE
在严格模式下,不允许日期和月份为零 - NO_ZERO_DATE
设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告 - ERROR_FOR_DIVISION_BY_ZERO
在insert或update过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时Mysql返回NULL - NO_AUTO_CREATE_USER
禁止GRANT创建密码为空的用户 - NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常 - PIPES_AS_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样是,也和字符串的拼接函数Concat想类似 - ANSI_QUOTES
启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
查询 SQL_MODE
select @@GLOBAL.sql_mode;
或
select @@SESSION.sql_mode;
设置 SQL_MODE
- 通过命令设置
set global sql_mode = 'modes...';
或
set session sql_mode = 'modes...';
- 通过配置文件设置
编辑 MySQL 的配置文件,在[mysqld]
中加入以下内容sql_mode=
示例如下:
[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
用户相关
查看用户
仅查看用户名
select user from mysql.user;
查看用户名、host
select user,host from mysql.user;
查看用户权限
查看用户全局权限
查询 mysql.user
表数据即可
查看用户数据库权限
查询 mysql.db
和 mysql.host
表数据即可
查看用户表权限
查询 mysql.tables_priv
表数据即可
查看用户列权限
查询 mysql.columns_priv
表数据即可
修改用户
根据用户名修改 host
update mysql.user set host = '' where user = '';
update mysql.db set host = '' where user = '';
根据 host 修改 host
update mysql.user set host = '' where host = '';
update mysql.db set host = '' where host = '';
修改密码
alter user '用户名'@'host' identified by '密码';
或
mysqladmin -u 用户名 -h host -p password "密码"
注意:password
是关键字;密码必须用 ""
括起来
数据库相关
查看全部数据库
show databases;
创建数据库
create database 数据库名称;
删除数据库
drop database 数据库名称;
切换数据库
use 数据库名称;
数据相关
导出数据
导出 MySQL 数据到 db 文件
mysqldump -u用户名 -p密码 数据库名称 > 导出文件
示例:
mysqldump -uroot -p123456 mysql > /opt/mysql/backup/mysql.db
导入数据
导入 db 文件数据到 MySQL
mysql -u用户名 -p密码
use 数据库名称;
source 导入文件;
示例:
mysql -uroot -p123456
use mysql;
source /opt/mysql/backup/mysql.db;
触发器
查看触发器
- 选择数据库
use 数据库名称;
- 查看触发器
show triggers;
删除触发器
drop 触发器名称;
创建触发器
- 单条语句
create trigger 触发器名称 触发时机 触发事件 on 表名称 for each row 触发语句;
- 多条语句
delimiter ||
create trigger 触发器名称 触发时机 触发事件
on 表名称 for each row
begin
触发语句1;
触发语句2;
......
end
||
delimiter ;
说明:
触发时机:
- BEFORE
:之前
- AFTER
:之后
触发事件:
- INSERT
:插入
- DELETE
:删除
- UPDATE
:更新
示例如下:
create trigger trigger_test_del_1 AFTER DELETE on tablea FOR EACH ROW delete from tableb where id=OLD.id;
参考博客
- 博客园 小念 :https://www.cnblogs.com/kiko2014551511/p/11527480.html
- 博客园 NeitherCandidate : https://www.cnblogs.com/shaojiafeng/p/9791211.html
- 博客园 周伯通之草堂 :https://www.cnblogs.com/phpper/p/7587031.html
- CSDN :https://blog.csdn.net/qq_40757240/article/details/118068317
本文作者:huty
评论已关闭