0
点赞
收藏
分享

微信扫一扫

Mysql命令大全

i奇异 2022-06-28 阅读 82


文章目录

  • ​​一、数据库​​
  • ​​`设置大小写不敏感`​​
  • ​​`设置隔离级别`​​
  • ​​`设置时区`​​
  • ​​临时修改​​
  • ​​永久修改​​
  • ​​`排序规则`​​
  • ​​查看当前排序规则​​
  • ​​设置排序规则​​
  • ​​生成修改表排序规则的语句​​
  • ​​生成修改表中字段排序规则的语句​​
  • ​​`sql_mode`​​
  • ​​二、用户​​
  • ​​`密码`​​
  • ​​`删除用户`​​
  • ​​`权限`​​
  • ​​三、库(schema)​​
  • ​​`查看创建库的sql语句`​​
  • ​​四、表​​
  • ​​`查看清理日志表的sql`​​
  • ​​`查看创建表的语句`​​
  • ​​`表按字段排序`​​
  • ​​`alter table 表名 动作`​​
  • ​​`查看db_test库有多少张表`​​
  • ​​`查询表是否存在`​​
  • ​​`修改表名大小写`​​
  • ​​五、导入导出sql​​
  • ​​`在Mysql中导入`​​
  • ​​`在Linux命令行导入`​​
  • ​​`导出sql`​​
  • ​​六、实操​​
  • ​​`创建数据库,创建用户并授权`​​

一、数据库

mysql> select now() from dual;          #查看数据库当前时间
show create database 数据库名; #查看数据库创建时的信息
select max(version) from schema_version; #查看schema的版本
drop schema db_test; #删除数据库
show variables like '%storage_engine%'; #查看默认的存储引擎

​设置大小写不敏感​

show variables like '%case%';

lower_case_file_system
表示当前系统文件是否大小写敏感,只读参数,无法修改。

ON 大小写不敏感
OFF 大小写敏感

lower_case_table_names
表示表名是否大小写敏感,可以修改。

lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感
lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作,大小写不敏感

Mysql命令大全_mysql
修改配置文件/etc/my.cnf

[mysqld]
lower_case_table_names=1

重启mysql

​设置隔离级别​

修改配置文件/etc/my.cnf

[mysqld]
transaction_isolation=READ-COMMITTED

​设置时区​

查看当前时区

mysql> show variables like '%time_zone%';

Mysql命令大全_sql_02

临时修改

mysql> set global time_zone = '+8:00';
mysql> flush privileges;
mysql> exit;

退出后再登录
Mysql命令大全_表名_03

永久修改

vi /etc/my.cnf

[mysqld]
default-time_zone = '+8:00'

重启mysql

​排序规则​

查看当前排序规则

mysql> show variables like 'collation%';

Mysql命令大全_sql_04

设置排序规则

在/etc/my.cnf的[mysqld]下面添加:

[mysqld]
character_set_client_handshake = FALSE
collation_server = utf8mb4_bin
init_connect='SET NAMES utf8mb4 COLLATE UTF8MB4_BIN'

生成修改表排序规则的语句

SELECT CONCAT('ALTER TABLE `schema名字.',TABLE_NAME,' COLLATE = utf8mb4_bin;') ss
from information_schema.`TABLES` tb where tb.TABLE_SCHEMA='schema名字' and tb.TABLE_COLLATION!='utf8mb4_bin'

生成修改表中字段排序规则的语句

SELECT CONCAT('alter table `schema名字`.',TABLE_NAME,' convert to character set utf8mb4 collate utf8mb4_bin;') from information_schema.`COLUMNS` where collation_name is not null and collation_name!='utf8mb4_bin' and table_schema='schema名字' group by TABLE_NAME;

​sql_mode​

mysql> select @@sql_mode;   #查看当前sql模式
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'; #设置sql模式

二、用户

​密码​

mysql -uroot -p$tmppasswd -S /app/mysqldata/$PORT/mysql.sock --connect-expired-password -e "set password=password('msds007')"
mysqladmin -uroot -p"初始密码" "新密码"
#设置root密码
update user set password=password("linux@123") where user='root' and host='localhost';
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; #修改root密码

​删除用户​

drop user 'test'@'%';

​权限​

show grants for root@'localhost'; #查看用户权限
#WITH GRANT OPTION将权限传递给第三方,也就是能使得root用户可以对其它用户进行授权
grant all privileges on *.* to root@localhost identified by 'Admin_123' WITH GRANT OPTION;
revoke all on 库名.* from 用户名@'%'; #取消对库的授权
GRANT SELECT ON *.* TO '用户名'@'%' IDENTIFIED BY "123456"; #授予只读权限
flush privileges; #刷新权限

三、库(schema)

​查看创建库的sql语句​

show create database 库名

四、表

​查看清理日志表的sql​

SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM information_schema.TABLES WHERE table_schema='表名' AND TABLE_NAME LIKE '%LOG%';

​查看创建表的语句​

SHOW CREATE TABLE  表名 \G;

​表按字段排序​

select * from schema_version order by version desc;

​alter table 表名 动作​

添加字段---add
alter table t1 add mail varchar(50) default "stu@163.com"; #添加表字段,设置默认值
alter table t1 add stu_num char(9) first; #在最前面添加
alter table t1 add pay float(7,2) default 20000 after class; #在class字段后面添加
修改字段---modify
在插入表记录之前需要先设计好字段结构
alter table t1 modify mail char(50); #修改表字段的类型
alter table t1 modify mail char(50) after class; #移动表的位置
修改字段名---change
alter table t1 change pay money float(7,2);
alter table t1 change yy age int(1) not null default 28
删除字段---drop
alter table t1 drop age,drop qq
修改表名---rename
rename table t1 to t2;

​查看db_test库有多少张表​

SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = 'db_test' GROUP BY table_schema;

​查询表是否存在​

SELECT table_name FROM information_schema.TABLES WHERE table_name ='表名';

​修改表名大小写​

lower_case_table_names改为0→备份→表名改成大写

#在dg上执行,会打印把所有表名修改为大写的命令
SELECT CONCAT('RENAME TABLE ',TABLE_NAME ,' TO ', UPPER(TABLE_NAME),';') FROM INFORMATION_SCHEMA.`TABLES` WHERE TABLE_SCHEMA='库名';
# 把表名从小写改为大写
RENAME TABLE t_bill_area_css_def_001 TO T_BILL_AREA_CSS_DEF_001;

五、导入导出sql

​在Mysql中导入​

chmod +x /root/mysql_init.sql
mysql -utest -p123456
use db_test
source /root/mysql_init.sql;

​在Linux命令行导入​

最好用root用户导入

mysql -h192.168.1.2 -uroot -p123456 db_test < mysql_init.sql

-h 指定Mysql服务器所在的机器IP
-u 指定用户名
-p 使用密码登录
db_test 表示要操作的数据库

​导出sql​

–set-gtid-purged=off:记录binlog日志
备份test库到test.sql文件

mysqldump --set-gtid-purged=off --skip-lock-tables -udb_test -p123456 test > test.sql

六、实操

​创建数据库,创建用户并授权​

#创建数据库db_test,设置字符集为utf8mb4
create schema if NOT EXISTS db_test default character set utf8mb4 collate utf8mb4_general_ci;

#创建用户test,%表示可以从任意主机登录,设置登录密码为123456
create user if NOT EXISTS 'test'@'%' identified by '123456';

#授权test用户对db_test库拥有所有权限
grant ALL on db_test.* to 'test'@'%';
flush privileges;


举报

相关推荐

0 条评论