全网最全的关系型数据库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;
