关系数据库MySQL的常用基础命令详解实战

全网最全的关系型数据库MySQL解析及其安装部署的保姆级教程https://blog.csdn.net/xiaochenXIHUA/article/details/151891095注意:以下所有的操作内容的MySQL版本是【8.4.6 MySQL Community Server】

一、连接MySQL进行用户的创建和密码修改授权

1.1、客户端连接MySQL

连接MySQL的客户端工具有很多(如:Navicat、DBeaver、phpMyAdmin、MySQL-Front),一般我们在Linux上使用mysql客户端进行Mysql服务器的登录和操作。

bash 复制代码
#在Linux中使用的mysql客户端连接mysql服务器命令

#1-连接到本机的MySQL服务命令
mysql -u root -p

#2-连接到远程主机上的MYSQL。假设远程主机的IP为:172.16.12.36,用户名为root,密码为abcd123;(通用的命令语法是:mysql -h 主机IP地址 -P 端口号 -u用户名 -p用户密码)
mysql -h 172.16.12.36 -P 13336 -uroot -p


#查看Mysql数据库的所有数据库信息命令
show databases;

#进入到某个数据库中(如进入到mysql库中)
use mysql;

#查看数据库中的所有表信息
show tables;

#退出mysql数据库
exit;
quit;

1.2、创建修改MySQL指定用户和密码

bash 复制代码
#创建Mysql的用户和密码

#1-创建一可在mysql本机连接的新用户(如创建ck用户密码为qwer1234)
create user ck@'localhost' identified by 'qwer1234';

#2-创建一可从【192.168.3】网段连接Mysql Server的新用户(如创建ck用户密码为qwer1234)
create user ck@'192.168.3.%' identified by 'qwer1234';
 
#3-创建一可从任何主机连接Mysql Server的新用户
create user ck@'%' identified by 'qwer1234';
 
#4-查看当前mysql数据库所有的账号信息
select user,password,host from user;
select user,password,host from mysql.user;
bash 复制代码
#修改指定用户的密码

#方式一【不推荐】:直接使用mysqladmin修改指定用户的密码【mysqladmin -u用户名 -p旧密码 password 新密码】(如:将root用户的密码修改为abc123456)
/usr/local/mysql/mysql-8.4.6/bin/mysqladmin -uroot -p password abc123456


#方式二:登录到Mysql Server后执行修改指定用户的密码
#1-先登录到Mysql
/usr/local/mysql/mysql-8.4.6/bin/mysql -uroot -p

#2-执行修改指定用户密码的命令
alter user root@'localhost' identified by 'qwer1234';
alter user ck@'192.168.3.%' identified by 'qwer1234';

#3-刷新权限(即:让我们修改用户的密码生效)
flush privileges;

注意:直接使用方式一修改指定用户的密码是十分不安全的,不推荐(你修改后也会有警告信息提示不安全);这是因为该操作是明文操作,都会记录到Linux的历史记录【history】中,很容易就将用户和密码信息暴露了。

1.3、设置MySQL用户密码过期时间

bash 复制代码
#设置密码过期

#1-设置指定用户密码的过期时间(如:设置ck用户密码在30天后过期)
alter user ck@'192.168.3%' password expire interval 30 day;

#2-设置指定用户密码永不过期(如:设置root用户密码永不过期)
alter user root@localhost password expire never;

#3-设置指用户密码立即过期(如:设置ck2用户密码立即过期)
alter user ck2@'%' password expire;


#4-最后一定刷新权限(才会让配置生效)
flush privileges;
bash 复制代码
#查看用户过期信息
select user,host,password_expired,password_lifetime,password_last_changed,Password_reuse_time,Password_reuse_history from mysql.user;

#查看所有人员的密码有效时间(假设密码有效期为30天,查看root用户)
select User, Host, password_last_changed, password_lifetime,date_add(password_last_changed, interval 30 day) as password_expiry_date from mysql.user where  password_expired = 'Y';

#查看超过密码有效期30天的账号信息(即:密码无效的账号有哪些)
select * from (select User, Host, password_last_changed, password_lifetime,date_add(password_last_changed, interval 30 day) as password_expiry_date from mysql.user where  password_expired = 'Y') tmp where password_expiry_date<now();

1.4、设置和移除MySQL用户的权限

bash 复制代码
#查看用户信息和用户的权限信息

#查看用户信息
select user,host,password_expired,password_lifetime,password_last_changed,Password_reuse_time,Password_reuse_history from mysql.user;

#查看当前用户的权限
show grants;

#查看指定用户的权限
show grants for ck@'192.168.1.2';
bash 复制代码
#设置用户操作MySQL数据库的权限(前提是该用户要存在)

select user,host,password_expired,password_lifetime,password_last_changed,Password_reuse_time,Password_reuse_history from mysql.user;

create user ckk@'localhost' identified by 'abc123456';
create user ckk2@'localhost' identified by 'abc123456';
create user ckk3@'localhost' identified by 'abc123456';
create user ckk4@'localhost' identified by 'abc123456';
create user ckk5@'localhost' identified by 'abc123456';

show grants for ckk@'localhost';

#1-【拥有MySQL所有权(超管权限,慎用)】给ckk用户授予只能在MySQL Server主机上操作的所有权
grant all on *.* to ckk@'localhost';

#2-【拥有指定数据库的所有权】给ckk2用户授予连接MySQL Server操作wordpress数据库的所有权
grant all on wordpress.* to ckk2@'localhost';

#3-【拥有指定数据库的增、删、改、查权限】给ckk3用户授予连接MySQL Server操作wordpress数据库的增、删、改、查权限
grant insert,delete,update,select on wordpress.wp_users to ckk3@'localhost';


#修改MySQL Server中指定用户的主机名称(如:修改ckk3用户的主机为192.168.1.2)
update mysql.user set host='192.168.1.2' where user='ckk3';

#任意一条授权指令执行后都建议直接执行刷新权限操作让修改生效
flush privileges;
bash 复制代码
#移除指定用户的权限

#1-移除指定用户所有数据库下所有表的所有权限(如:移除ckk用户对于所有数据库所有表的所有权限)
revoke all on *.* from ckk@'localhost';
  
#2-移除指定用户指定数据库下所有表的指定权限(如:移除ckk2用户对于wordpress数据库下所有表的delete、update、drop权限)
revoke delete,update,drop on wordpress.* from ckk2@'localhost';
  
#3-移除指定用户指定数据库下指定表的指定权限(如:移除ckk3用户对于wordpress数据库下wp_users表的delete、update、drop权限)
revoke delete,update on wordpress.wp_users from ckk3@'192.168.1.2';

#任意一条授权指令执行后都建议直接执行刷新权限操作让修改生效
flush privileges;

二、MySQL数据库和表的操作

2.1、创建使用和删除数据库

bash 复制代码
#创建MySQL数据库

#1-创建MySQL指定数据库(如:创建名为ckdb的数据库)
create database ckdb;

#2-显示所有数据库
show databases;

#3-使用指定数据库(如:使用wordpress数据库)
use wordpress;

#4-显示当前数据库下的所有表(如:显示wordpress数据库下的所有表)
show tables;

#5-删除数据库
drop database ckdb;
#数据库存在则删除,不存在也不会报错
drop database if exists ckdb;

2.2、数据库表的操作

bash 复制代码
#1-数据库表的常用操作

#1-创建表【create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);】
create table MyClass(
    id int(4) not null primary key auto_increment,
    name char(20) not null,
    sex int(4) not null default '0',
    degree double(16,2));

#2-查看表结构
desc MyClass;

#3-给表插入数据【insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]】
insert into MyClass(name,sex,degree) values('Tom',23,90.45),('Joan',21,88.99), ('Wang', 24,99.5);

#4-查看表的所有数据
select * from MyClass;

#5-删除表数据
delete from MyClass where id=1;

#6-修改表数据
update MyClass set name='Mary' where id=2;

#7-给表增加字段
alter table MyClass add passtest int(4) default '0';

#8-修改表名
rename table MyClass to YouClass;

#9-删除表(如:删除刚才创建的MyClass表)
drop table YouClass;
drop table if exists YouClass;

2.3、备份数据库

bash 复制代码
#备份数据库、数据表、表结构

#1-导出整个数据库【语法: mysqldump -u 用户名 -p 数据库名 > 导出的文件名】(如:导出MySQL Server中的wordpress数据库)
/usr/local/mysql/mysql-8.4.6/bin/mysqldump -uroot -p wordpress > wordpress.sql

#2-导出整个表【语法: mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名】(如:导出MySQL Server中的wordpress数据库下的wp_users表)
/usr/local/mysql/mysql-8.4.6/bin/mysqldump -uroot -p wordpress wp_users> wp_users.sql

#3-导出整个数据库结构(仅适用于数据库量较小的情况)【语法:mysqldump -u 用户名 -p -d  --add-drop-table 数据库名 > 导出的文件名】-d 没有数据 【--add-drop-table 】表示在每个create语句之前增加一个drop table;【--skip-add-drop-table 】表示不在每个create语句之前增加一个drop table
/usr/local/mysql/mysql-8.4.6/bin/mysqldump -uroot -p -d  --add-drop-table wordpress > wordpress_struct.sql


#4-将备份的整个数据库内容恢复到MySQL Server中
#4.1-先检查需要恢复的数据库是否存在,不存在则先创建
create database wordpress;
#4.2-直接导入恢复
source wordpress.sql;

三、其他资料

Mysql或MariaDB数据库的用户与授权操作------实操保姆级教程_mariadb给用户授权https://blog.csdn.net/xiaochenXIHUA/article/details/140664884

相关推荐
ANYOLY3 小时前
Redis 面试宝典
数据库·redis·面试
鲲志说3 小时前
数据洪流时代,如何挑选一款面向未来的时序数据库?IoTDB 的答案
大数据·数据库·apache·时序数据库·iotdb
没有bug.的程序员3 小时前
MVCC(多版本并发控制):InnoDB 高并发的核心技术
java·大数据·数据库·mysql·mvcc
脑花儿5 小时前
ABAP SMW0下载Excel模板并填充&&剪切板方式粘贴
java·前端·数据库
SELSL5 小时前
SQLite3的API调用实战例子
linux·数据库·c++·sqlite3·sqlite实战
洲覆5 小时前
Redis 核心数据类型:从命令、结构到实战应用
服务器·数据库·redis·缓存
傻啦嘿哟5 小时前
Python SQLite模块:轻量级数据库的实战指南
数据库·python·sqlite
维尔切5 小时前
HAProxy 负载均衡器
linux·运维·数据库·负载均衡
什么半岛铁盒5 小时前
C++项目:仿muduo库高并发服务器-------Channel模块实现
linux·服务器·数据库·c++·mysql·ubuntu