MYSQL语句及客户端工具
sql语句分类:
1.数据定义语言(DDL)
创建、修改或删除数据库中各种对象,包括表、视图、索引等
命令:CREATE TABLE (创建表) , CREATE VIEW(创建视图), CREATE INDEX(创建索引) 、ALTER TABLE (后期修改表属性),DROP TABLE(删除) , DROP VIEW(删除视图), DROP INDEX (删除索引)
2.查询语言(DQL)
按照指定的组合、条件表达式或排序检索已存在的数据库中数据,
不改变数据库中数据。
命令:SELECT…FROM…WHERE…
3.数据操纵语言(DML)
对已经存在的数据库进行元组的插入、删除、修改等操作
命令:INSERT (向表里插入新的数据局) 、UPDATE(更新表中的数据)、DELETE (删除表内数据)
4.数据控制语言(DCL)
用来授予或收回访问数据库的某种特权、
控制数据操纵事务的发生时间及效果、对数据库进行监视
命令:GRANT(授权)、REVOKE(回收权限)、COMMIT(事务提交)、ROLLBACK (回滚 )
======================================================================================
设置数据库初始密码:
mysqladmin -u root password '123456'
后期修改数据库用户的密码:
[root@localhost ~]# mysqladmin -u root -p旧的密码 password '新的密码'
[root@localhost ~]# mysqladmin -u root -p'TvC:Rm1ZlxtG' password '123456'
mysql破解root管理员密码:
systemctl stop mariadb //关闭应用服务
netstat -lnpt | grep 3306 //查询端口查看是否还有存在服务
mysqld_safe --skip-grant-tables & //跳过加载授权过程
mysql //连接mysql
update mysql.user set authentication_string=password('000000') where user='root'; //将root密码改为000000
flush privileges; //刷新授权表
exit //退出(\p也可退出)
通过ps查看mysqld进程,并杀死所有进程
systemctl stop mysqld
systemctl start mysqld
mysql -u root -p123abc
显示当前连接用户:
select user();
查看数据库服务的基本信息:
status
mysql是一套关系型数据库管理系统,在每台mysql服务器中,均支持运行多个数据库(文件系统的目录)(分类、按照产品划分)。每个库相当于一个容器,其中存放着许多数据表,表中的每一行包含一条具体的数据关系信息,这些信息被称为数据记录。
数据库的基本概念:
数据
描述事物的符号记录称为数据(Data)
包括数字,文字、图形、图像、声音、档案记录等
以“记录”形式按统一的格式进行存储
数据表
将不同的记录组织在一起,就形成了 “表”
是用来存储具体数据的
数据库
数据库就是表的集合,是存储数据表的仓库
以一定的组织方式存储的相互有关的数据
查看当前服务器中有哪些库:
show databases;
切换数据库:
use mysql;
显示当前操作的数据库:
select database();
查看有哪些表:
show tables; //在mysql下执行
mysql数据库的数据文件存放在/usr/local/mysql/data中,每个子目录对应一个数据库。在mysql存储引擎时每个表对应三个文件夹。
[root@localhost ~]# ls /usr/local/mysql/data/mysql |grep ^user
user.frm 表的结构定义
user.MYD 表的数据
user.MYI 表的索引
显示数据库的结构(字段(列)):
DESCRIBE [数据库名.]表名 = desc
describe user;
describe mysql.user;
创建新的数据库:
create database crushlinux;
删除指定的数据库:(谨慎使用)
DROP DATABASE 数据库名
drop database crushlinux;
创建新的数据表:
CREATE TABLE 表名 (字段1名称 类型,字段2名称 类型,……,primary key(字段名称));
用户名不超过16字节的字符串,不能为空;密码字串不能超过48个字符,插入记录时使用MySQL函数加密,默认值为空;考虑到查询的主要用户名不能重复,因此将user_name这列设置为主键。
CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));
删除指定的数据表:
drop table 表名;
drop table users;
向数据表中插入新的数据记录:
INSERT INTO 表名(字段1, 字段2, ……) VALUES(字段1的值, 字段2的值, ……) ;
INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD('123456')
INSERT INTO users VALUES('lisi', PASSWORD('654321'));
select * from users;
);
从数据表中查询符合条件的数据记录:
SELECT 字段名1,字段名2 …… FROM 表名 WHERE 条件表达式
SELECT user_name,user_passwd FROM users where user_name= 'zhangsan';
修改、更新数据表中的数据记录:
UPDATE 表名 SET 字段名1=新值1[,字段名2=新值2] WHERE 条件表达式;
在数据库中修改root用户密码:
select user,authentication_string,host from mysql.user;
update user set password=password('000000') where user='root';
flush privileges; //刷新授权表后退出,密码修改完毕
在数据表中删除指定的数据记录:
DELETE FROM 表名 WHERE 条件表达式;
DELETE FROM users WHERE user_name='lisi';
设置用户权限(用户不存在时,则自动建立新的用户):
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来 源地址[ IDENTIFIED BY ‘密码’ ];
权限列表:用于列出授权的各种数据库操作,通过逗号进行分割,如:select,insert,update等,all表示所有权限,可以执行任意操作。
库名.表名:用于指定授权操作的数据库和表的名称,可以使用通配符(*)表示所有
用户名@来源地址:用于指定用户和允许访问的客户机地址;来源地址可以是IP地址,域名,%通配符表示所有(但不能表示localhost)
MySQL通配符:
_:任意单个字符 192.168.1._(表示1-9)
%:任意长度的任意字符 192.168.1.%(表示1网段的都可以)
GRANT select ON crushlinux.* TO 'wangermazi'@'localhost' IDENTIFIED BY '123456';
只是可以查的权限,不可修改。
查看用户权限:
SHOW GRANTS FOR 用户名@域名或IP
SHOW GRANTS FOR 'wangermazi'@'localhost';
撤销用户权限:
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@域名或IP
revoke select on crushlinux.* from 'wangermazi'@'localhost';
用于显示广泛的服务器状态信息:
show status;
查看命令的帮助:
help create database;
help create table;
查看当前登录用户:
show grants;
show grants for 名字; //查看某一个人的
显示服务器错误或警告信息:
show errors;
show warnings;
显示当前时间:
select now();
显示当前用户及时间:
select CURRENT_USER(),CURRENT_TIMESTAMP;
select user(),now();
授权Windows客户机地址拥有访问权限:
grant all on *.* to 'root'@'192.168.96.1' IDENTIFIED BY '123456'; //授予了一个所有库所有表的一个管理员权限
flush privileges;
如果连接不上关闭防火墙即可