Linux下对MySQL/MariaDB数据库的基本操作以及linux mysql添加用户、删除用户、用户权限的授予
登录:
mysql -u root -p + 回车 -u后跟用户名,-p表示需要密码登录,首次进入mysql用root用户
如:
MariaDB>>status; —列出当前mysql的相关状态信息,注意要加分号';'
MariaDB>>show databases; —显示数据库列表
MariaDB>>use LXF; —选中数据库LXF
MariaDB>>show tables; —显示LXF数据库下的tables列表
MariaDB>>create database lxf; —创建数据库lxf,需要使用root用户登录,普通用户没有创建数据库的权利
MariaDB>>drop table 数据表名; —删除表
MariaDB>>drop database 数据库名; —删除数据库
MariaDB>>quit; —退出
用户相关:
1、查看全部的用户:
2、新建用户:
CREATE USER
'abc'
@
'localhost'
IDENTIFIED BY
'XXXXXX'
; —会发现用户abc以及被添加成功
3、为用户授权grant
grant 权限 on 数据库.* to username@登录主机 identified by 'password';
3.1 为用户授予部分权限:
grant select,insert,delete,update on lxf.* to abc identified by '123456';
演示样例:
3.6 撤销已经赋予给 MySQL 用户权限的权限:
grant all privileges on lxf.* to test identified by "1234";
revoke all privileges on lxf.* from test identified by "1234";
3.7 MySQL grant、revoke 用户权限注意事项
1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“
grant select on testdb.* to dba@localhost with grant option;
这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。
使用root登录:
mysql -u root -p
运行命令:
update mysql.user set password=password('123QWE') where User="test" and Host="localhost";
刷新权限:
flush privileges;
![](https://images2018.cnblogs.com/blog/1111556/201807/1111556-20180709165206421-884640159.png)
7.6 创建新表
create table emp1(
-> empid int not null,
-> sex varchar(30),
-> age int not null,
-> primary key (empid)); —— 该字段列值唯一,"primary key" 表示该列是表的主键, MySQL将自动索引该列
7.7 显示emp1各字段信息
show columns from emp1;
7.7.1 show create table emp; - 显示表emp的创建过程,同样可以查看其内部结构
7.8 向表中插入一条数据:
insert into emp1 values(1,'male',18);
向表中插入多条数据:
insert into emp1 values(1,'female',18),(2,'female',18),(3,'female',18);
7.9 查询表数据:
select * from emp1;
8、修改(alter) 、删除(drop)、update对数据库和表的相关操作
8.1 ALTER:
MariaDB>> ALTER TABLE table_name ...; - 创建表之后,有时我们需要对表的结构进行修改,就用这个作为命令头部
MariaDB>>alter table emp2 rename(as) emp1; - 表重命名
MariaDB>>ALTER TABLE table_name ADD 列名 列数据类型 [AFTER 插入位置]; - 在表中新增一个字段信息
如:
alter table emp1 add name varchar(30) after empid;
MariaDB>>ALTER TABLE table_name CHANGE 列名称 列新名称 新数据类型; - 指定列重命名
如:
alter table emp1 change sex gender varchar(30);
MariaDB>>ALTER TABLE table_name DROP 列名称; - 删除指定列
如:alter table emp1 drop name;
删除主键、添加主键
删除主键:
alter table table_test drop primary key;
增加主键:
alter table table_test add primary key(id);
8.2 删除数据总结:
8.2.1 truncate 清空表的全部数据:
truncate table table_name;
8.2.2 delete 删除表中某一条或者某几条数据
delete delete from emp where age=18;
8.2.3 drop
删除表:drop table table_name;
删除库:drop database database_name;
8.3 DROP:
MariaDB>>DROP TABLE table_name; - 删除指定表
如:drop table emp1;
MariaDB>>DROP DATABASE database_name; - 删除指定数据库
如:
8.4 UPDATE:
update emp set gender='female' where empid=1;
9、数据库表间复制(参考https://www.jb51.net/article/47562.htm)
同一数据库表间复制:
INSERT (INTO) table1 select * from table2; - 完全复制(mysql测试可用)
INSERT (INTO) table1 select distinct * from table2; - 不复制重复纪录(mysql测试不可用)
INSERT (INTO) table1 select top 5 * from table2; - 前五条纪录(mysql测试不可用)
跨数据库表间复制:
INSERT (INTO) (current.)table1 select * from src_database.table2; - 完全复制
INSERT (INTO) (current.)table1 select distinct * from src_database.table2; - 不复制重复纪录
INSERT (INTO) (current.)table1 select top 5 * from src_database.table2; - 前五条纪录
若table1不存在,则首先应该创建表,并使其结构与src_database结构相同方可copy:
CREATE TABLE table1 LIKE (src_database.)table2; - +(src_database.)取决于是否在同一个数据库
INSERT table1 SELECT * FROM (src_database.)table2;
10、多表查询
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录
RIGHT JOIN(右连接):与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录
文章引用地址:https://www.cnblogs.com/Glory-D/p/7518541.html、https://www.cnblogs.com/zhchoutai/p/6929103.html、https://blog.csdn.net/qq_37913816/article/details/79424588
、https://blog.csdn.net/wzqzhq/article/details/53283921