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、查看全部的用户:

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

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.2 加全部权限到testDB数据库中
grant all privileges on testDB.* to test identified by '1234';
3.3 授予一个用户全部数据库的某些权限:
grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
3.4 然后须要运行刷新权限的命令:
flush privileges;
3.5 查看当前用户(自己)权限:

show grants;

查看其他 MySQL 用户权限:

show grants for dba@localhost;

3.6 撤销已经赋予给 MySQL 用户权限的权限:

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

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 来统一管理。

4、删除用户:
Delete FROM mysql.user Where User='test' and Host='localhost';
然后刷新权限:
flush privileges;
5、改动指定用户密码password
使用root登录:
mysql -u root -p
运行命令:
update mysql.user set password=password('123QWE') where User="test" and Host="localhost";
刷新权限:
flush privileges;
6、验证修改的密码是否生效:
成功登录服务器后,使用对lxf数据库拥有权限的用户登录系统:
mysql  lxf -u test -p +回车
输入最近一次修改的密码:123QWE
即可登录
7、实战
让qwe用户拥有对数据库lxf操作的所有权限,创建表emp1,并向表中插入数据:
7.1 先用root用户登录:mysql  -u root -p +root的password
7.2 给qwe用户授予最大权限:grant all privileges on lxf.* to qwe identified by 'password';
7.3 退出quit;
7.4 使用qwe用户登录linux数据库:mysql lxf -u qwe -p +qwe的password
7.5 查看当前用户权限:show grants

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

posted @ 2018-07-09 00:32  前行者家园  阅读(821)  评论(0编辑  收藏  举报