MySQL数据库常用命令

MySQL中自增ID起始值修改方法
表名:users;
建表时添加:
create table users(id int auto_increment primary key,666);
表已创建,修改:
alter table users add id int auto_increment primary key; #将自增字段设置为primary key
alter table users AUTO_INCREMENT=10000;

MySQL数据库新建用户命令:
create user '用户'@'访问IP' identified by '密码';
例如,创建test用户,允许所有IP访问:
create user 'test'@'%' identified by '123456' with grant option;

with grant option 表示该用户可以将自己拥有的权限授权给别人;如果不想让该用户有grant权限,则可不加;

MySQL数据库修改用户密码:
方式一:
mysql> set password for 用户名@localhost = password('新密码');
方式二:
update table mysql.user set password = password('新密码') where user = 'test' and host = '%';

alter user 'his'@'%' identified by '123456';

MySQL创建数据库命令:
create database test_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

MySQL为新用户分配指定数据库权限:
给用户test授权数据库test_db的所有权限,并且用户test在所有网络IP上都有权限:
grant all privileges on test_db.* to 'test'@'%' identified by '123456';

MySQL给用户分配指定的权限:
grant select, insert, update, delete to 'test'@'localhost' identified by '123456';

MySQL修改用户的IP访问权限:
use mysql;
update user set host = '%' where user = 'test' ;

MySQL授权只读权限:
grant select on test_db.* to 'select_only_user'@'%' identified by '123456';

MySQL收回权限:
revoke insert on test_db.* from 'test'@'%';

MySQL查看某个用户的权限:
show grants for 用户名@主机;

MySQL删除用户:
drop user 用户名@主机;

刷新权限:
flush privileges;

给当前用户赋值PROCESS的权限:
grant process on . to 数据库用户名;

mysql压缩包安装,运行mysqld --initialize-insecure --user=mysql 出错:
解决:确认根目录下my.ini文件内路径目录格式是否正确,windows下分隔符必须为正斜杠 / 或 双反斜杠\,单反斜杠\会存在特殊字符\t \s的问题。

备份全部数据库(包含存储过程、自定义函数及事件)
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases > /tmp/all_database.sql

-R 表示导出存储过程和自定义函数
-E 表示事件

要求记录 binlog 位点信息 可用于搭建从库
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases --master-data=2 > /tmp/all_database.sql

备份指定数据库
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 > /tmp/db1.sql
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 db2 > /tmp/db1_db2.sql

备份部分表
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 > /tmp/tb1.sql
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 tb2 tb3 > /tmp/tb.sql

导出某个表,数据以单行insert显示
mysqldump -uroot -pxxxxxx --single-transaction --skip-extended-insert db1 tb1 > /tmp/tb1.sql

导出单表的部分数据
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where=" create_time >= '2021-06-01 00:00:00' " > /tmp/tb1.sql
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where='id < 10' > /tmp/tb1.sql

排除某些表导出
mysqldump -uroot -pxxxxxx --single-transaction --databases db1 --ignore-table=db1.tb1 --ignore-table=db1.tb2 > /tmp/db1.sql

只导出结构或只导出数据
mysqldump -uroot -pxxxxxx db1 --no-data > /tmp/db1_jiegou.sql
mysqldump -uroot -pxxxxxx db1 --no-create-info > /tmp/db1_data.sql

只导出某个库的存储过程及自定义函数
mysqldump -uroot -pxxxxxx -d -t -R db1 > /tmp/db1_routine.sql

远程导出 即MySQL服务端不在本地
mysqldump -uroot -pxxxxxx -hxxx.xxx.xx -P3306 --single-transaction --databases db1 > /tmp/db1.sql

mysqldump -uhis -p密码 --quick --events --databases smaple-yd --flush-logs --single-transaction > smaple-yd.sql
参数说明:
--quick
导出大表时很有用,强制mysqldump从服务器查询出的记录直接输出,而不是取出后将他们缓存在内存中
--events
导出事件
--flush-logs
结束当前日志,生成新的日志文件
--single-transaction

最后修改于:2022年08月04日 19:03

添加新评论