文章目录
- 一、数据库
- `设置大小写不敏感`
- `设置隔离级别`
- `设置时区`
- 临时修改
- 永久修改
- `排序规则`
- 查看当前排序规则
- 设置排序规则
- 生成修改表排序规则的语句
- 生成修改表中字段排序规则的语句
- `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会先把表名转为小写,再执行操作,大小写不敏感。
修改配置文件/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> set global time_zone = '+8:00';
mysql> flush privileges;
mysql> exit;
退出后再登录
永久修改
vi /etc/my.cnf
[mysqld]
default-time_zone = '+8:00'
重启mysql
排序规则
查看当前排序规则
mysql> show variables like 'collation%';
设置排序规则
在/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;