前言

每次有需求就需要搜索Google,重复的次数多了还是记录下自己实际要用的mysql和mysqldump常用命令留作参考,另外官方也宣布MySQL 5.7将于2023年10月21日结束生命周期,大家也要开始推动MySQL 8.0以上版本的升级。

更新历史

2023年05月17日 - 初稿

阅读原文 - https://wsgzao.github.io/post/mysql/


mysql创建用户和登录授权

  1. 公有云需要设置数据安全ACL白名单策略
  2. 内网环境需要设置授权访问策略
1
2
3
4
# 登录
mysql -h连接地址 -P端口 -u用户名 -p密码
mysql -h<host> -P3306 -u<user> -p

登录参数说明

  • 大写字母P代表端口,小写字母p代表密码。
  • 输入用户名和密码时,需要在-u和-p后面直接输入,不可以有空格。
  • -p后面也可以不用输入密码,执行命令后再输入,以防止密码明文显示。

MySQL 8.0有新的安全要求,不能像之前的版本那样一次性创建用户并授权需要先创建用户,再进行授权操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 创建新用户
# 其中username为自定义的用户名;host为登录域名,host为'%'时表示为 任意IP,为localhost时表示本机,或者填写指定的IP地址;paasword为密码
create user 'username'@'host' identified by 'password';

# 为用户授权
# 其中*.*第一个*表示所有数据库,第二个*表示所有数据表,如果不想授权全部那就把对应的*写成相应数据库或者数据表;username为指定的用户;%为该用户登录的域名
grant all privileges on *.* to 'username'@'%' with grant option;

# 授权之后刷新权限
flush privileges;

# 撤销授权

#收回权限(不包含赋权权限)
REVOKE ALL PRIVILEGES ON *.* FROM user_name;
REVOKE ALL PRIVILEGES ON user_name.* FROM user_name;
#收回赋权权限
REVOKE GRANT OPTION ON *.* FROM user_name;

#操作完后重新刷新权限
flush privileges;

# 删除用户
drop user 用户名@'登陆地址';

mysql导出和导入常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 数据库导出
mysqldump -uroot -h192.168.1.101 -p dbtest > dbtest.sql
# 数据库导入
mysql -uroot -h192.168.1.101 -p dbtest < /tmp/dbtest.sql --default-character-set=utf8mb4
# 数据表复制
CREATE TABLE new_table SELECT * FROM old_table;
# 表格重命名
RENAME TABLE old_table TO new_table;


# 导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
# 导出数据库中某个表
mysqldump -u 用户名 -p 数据库名 表名 > 导出的文件名
# 导出一个数据库结构(-d 没有数据)
mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名

mysqldump -u root -p test > test.sql
mysqldump -u root -p test users > test_users.sql
mysqldump -u root -p -d test > test.sql

参考文章

mysql — The MySQL Command-Line Client

mysqldump — A Database Backup Program

通过客户端、命令行连接RDS MySQL实例

文章目录
  1. 1. 前言
  2. 2. 更新历史
  3. 3. mysql创建用户和登录授权
  4. 4. mysql导出和导入常用命令
  5. 5. 参考文章