关系数据库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

相关推荐
曹牧20 分钟前
Oracle数据库中,将JSON字符串转换为多行数据
数据库·oracle·json
被摘下的星星40 分钟前
MySQL count()函数的用法
数据库·mysql
末央&1 小时前
【天机论坛】项目环境搭建和数据库设计
java·数据库
徒 花1 小时前
数据库知识复习07
数据库·作业
素玥1 小时前
实训5 python连接mysql数据库
数据库·python·mysql
jnrjian1 小时前
text index 查看index column index定义 index 刷新频率 index视图
数据库·oracle
瀚高PG实验室2 小时前
审计策略修改
网络·数据库·瀚高数据库
言慢行善2 小时前
sqlserver模糊查询问题
java·数据库·sqlserver
韶博雅2 小时前
emcc24ai
开发语言·数据库·python
有想法的py工程师2 小时前
PostgreSQL 分区表排序优化:Append Sort 优化为 Merge Append
大数据·数据库·postgresql