mysql和mariadb数据库基本操作

mysql社区版开源 其余收费

官网地址www.mysql.com www.oracle.com

国内mysql镜像站之一 中国科学技术大学开源软件镜像 http://mirrors.ustc.edu.cn/

安装依赖包
yum -y install net-tools.x86_64 libaio.x86_64 perl.x86_64
安装服务器
yum -y install mysql-community*
报冲突错误
yum -y remove mariadb-libs.x86_64
再安装
yum -y install mysql-community*
systemctl start mysqld
systemctl enable mysql
systemctl status mysql

root用户忘记密码以及修改密码
查询mysql默认密码
grep 'password' /var/log/mysqld.log
改密
1. mysqladmin -uroot -p '旧密码' password '新密码'
2. set password=password('new_password');(数据库里操作)
   记得刷新权限 flush privileges;
当root用户,忘记了密码。可以使用破解的方式来登录系统。修改密码。
vim /etc/my.cnf
在[mysqld]下添加
skip-grant-tables
重启mysql #Systemctl restart mysqld
mysql -uroot
修改(数据库内操作)
eg#  mysql>update mysql.user set authentication_string=password('QianFeng@123456789')  where  user='root'  and  host='localhost';
刷新权限 # flush privileges;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S6RGZo0p-1594294863670)(mysql/image-20200709162527746.png)]

改密

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2q5gLvY-1594294863673)(mysql/image-20200709162547630.png)]

登陆

mysql -uroot -pZhang@123

可以进行你的操作了

msriadb

因为centos里有mariadb的源

安装

安装
yum -y install mariadb-server mariadb
启动
systemctl start mariadb
开机自启
Systemctl enable mariadb
默认没有密码
mysql
设置密码
1.mysqladmin -uroot -password'123456' #(设置123456密码)

2. set password=password('new_password');(数据库里操作)
   记得刷新权限 flush privileges;
创建库 表
查看库 # show databases;
创建库 # create database 库名;
进入库  # use 库名;
创建表  # create table 表名(id int,name varchar(50))
解析  id int #序号 数值
      name varchar # 名字 字符(50)后面不表明数值的话默认是20
删除数据库 # drop database 库名;
查看当前所在库 # select database();
查看表 # show tables;
查看表结构 # desc 表名;
查看表里内容 # select * from 表名;
列出表里内容 # select * from 表名\G
删除用户  # DROP USER 'user1'@'localhost';

插入信息 insert into
#insert into +表名(id/name) values(字段值)
#insert into (表名) values(值)
#insert into 表名(字段名 id/name) values () 指定列插入
#insert into 表名 set 字段名=值; 设置字段对应的数据 
insert into t1(id/name) values( 1 ,'zhj');
insert into t1 set name="zhj"
eg 插入信息
use school; #进库
create student(id int,name varchra(50),sex enum('m','f'),age int);
#序号 字段长度 性别 年龄
show tables; #查表
desc student; # 查看表的结构
insert into 表名 values(字段值列表);
eg# insert into student values (1,'zhj'.'m'.22);
更新数据 update
语法 update 表名 set 列名 where condition;
# update student set id=6 where name='lixiaoyao'
删除数据 delete
语法 delete from 表名 where contion;
# delete from t6 where id=2; (删除t6表里第二列) 
查询排序
语法 升序
selete * from 表名 order by 列名 asc;
语法 降序
selete * from 表名 order by 列名 desc;
更改表信息
alter table 表名 modify id vachar(值)#更改表信息
alter table t1 add gender varchar(20) first(增加到开头) #把gender增加到开头
alter table t1 add gender varchar(20) after name; #增加到name后面
alter table 表名 add gender(#年龄) carchar(值) #增加一列 年龄
alter table 表名 change id emp_id int #修改id 为emp_id也可以修改约束
alter table t1 drop id(#列名); #删除id列
update 表名 set 字段名(id)=数据(1) where 条件; #更新数据
delete from t1 where id=1; #删除id为1的列 在删除前先select * from t1 where id=1; 查 看一下
drop table t1(表名)#删除表
drop database 库名; #删除库

简单查询
select * from +表名; #查看整个表
select * from t1 where id=1; #查看ip为1的列
#select * from t1 where 条件 and name="" 查看t1表 id为1 名字为“”
select * from t1 where id=1 and name is not null(#关键字); #查看t1表id=1 名字不等于 null的
select * from t1 where id = 1 and name = “zhanghaojie” #查看t1表id=1 名字等于张豪杰的
select * from t1 where id=1 or name = "zhj"; #查找t1表里id=1和name=张豪杰的列
select * from t1 order by id; #排序
select * from t1 order by id limit 1; #查看第一行
select * from t1 order by id limit 2,2; #查看从第二行之后的两行
desc t1(表名)#查看表结构
数据库基本操作
show create table t1\G #查看创建t1表的信息
show create database lining #查看创建lining库的信息
show create user root@'localhost' \G #查看创建的用户信息
show processlist\G #常看进程(当前正在登陆的mysql)
status \G #查看数据库状态 
kill (8,2,1,5,6,4) #吧进程号为()踢出mysql
create table t1(select * from mysql.user where 1=2(为真则成功,为假则失败));#克隆t1表 mysql.user的信息
函数操作
avg() # 求平均值
count() # 求记录总数
distinct() # 去重
max() # 最大值
min() # 最小值
授权
grant all on 库名.* to '主机'@'ip' identified by '密码';                       # 在这个主机上授予这个库所有权限
eg:grant all bbs.* to 'localhost'@'192.168.5.152' identified by 'Zhang@123';
# 在192.168.5.152主机上授予bbs库所有权限(给bbs库准备一个账号)
flush privileges;   # 刷新权限

深度解析
grant 权限列表  on 库名.表名 to '用户名'@'客户端主机'  [identified by '密码'  with option参数];

权限列表
all            # 所有权限
select,update  # 查询 更新

数据库 表名
*.*  # 所有库下的所有表
web.* # web库下的所有表
web.student # web库下的student表
grant SELECT (id), INSERT (name,age) ON mydb.mytbl to 'user8'@'localhost' identified by 'QianFeng@123'; 
	     Column level

客户端主机
%              # 所有主机
192.168.5.%    # 192.168.5.0网段的所有主机
192.168.5.152  # 指定主机
localhost      # 指定主机

==with_option参数 GRANT OPTION 授权选项

回收权限
remove all privileges on bbs.* from localhost@'192.168.5.152';
# 回收192.168.5.152主机上bbs库所有权限

简单查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7odPNpfi-1594294863678)(mysql/image-20200709163542016.png)]

//简单查询示例
当前库dvwa dvwa.users
mysql> select * from users;
mysql> select user_id,first_name,last_name from users;

其它库 mysql.user
mysql> desc mysql.user;
mysql> select * from mysql.user;
mysql> select user,password,host from mysql.user;

其它库 wordpress.user
mysql> desc wordpress.wp_users;
mysql> select * from wordpress.wp_users;
mysql> select user_login,user_pass from wordpress.wp_users;

//条件查询示例
mysql> select user,password,host from mysql.user where user='root';
mysql> select user,password,host from mysql.user where user='root' and host='localhost';
mysql> select user,password,host from mysql.user where user='root' or host='localhost';

mysql> desc dvwa.users;
mysql> select user_id,first_name,last_name from dvwa.users where first_name='yangge';
mysql> select user_id,first_name,last_name from dvwa.users where first_name='yangge' or 1=1;
mysql> select user_id,first_name,last_name from dvwa.users where first_name='admin' and 1=2;

mysql> select user_id,first_name,last_name from dvwa.users where user_id=2; mysql> select user_id,first_name,last_name from dvwa.users where user_id=7;

mysql> select user_id,first_name,last_name from dvwa.users where user_id=7 or 1=1;

//联合查询UNION
mysql> select user,password from mysql.user;
mysql> select user_login,user_pass from wordpress.wp_users;
mysql> select user,password from mysql.user union select user_login,user_pass from wordpress.wp_users;
mysql> select user,password,host from mysql.user union select user_login,user_pass from wordpress.wp_users;
ERROR 1222 (21000): The used SELECT statements have a different number of columns 
注:union查询前后字段数必须相同
mysql> select user,password,host from mysql.user union select user_login,user_pass,3 from wordpress.wp_users;


猜字段数
思考:前面的查询已经写死了,如何使下面的语句成功?
mysql> select * from dvwa.users
-> union
-> select user_login,user_pass from wordpress.wp_users;
ERROR 1222 (21000): The used SELECT statements have a different number of columns
方法:猜字段数
mysql> select * from dvwa.users union select 1;
mysql> select * from dvwa.users union select 1,2;
mysql> select * from dvwa.users union select 1,2,3;
mysql> select * from dvwa.users union select 1,2,3,4;
mysql> select * from dvwa.users union select 1,2,3,4,5;
mysql> select * from dvwa.users union select 1,2,3,4,5,6;

mysql> select * from dvwa.users union select user_login,user_pass,1,2,3,4 from wordpress.wp_users;
查询数据库库名,表名
====查询数据库库名、表名 information_schema.tables=== 
mysql> select * from information_schema.TABLES\G

mysql> select DISTINCT TABLE_SCHEMA from information_schema.TABLES;           //等价于show databases 

mysql> select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES\G

mysql> select TABLE_SCHEMA,GROUP_CONCAT(TABLE_NAME) from
information_schema.TABLES GROUP BY TABLE_SCHEMA\G

mysql> select TABLE_NAME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA='dvwa';           //等价于show tables e.g. ********* 679. row *********
# select * from yazd
  TABLE_CATALOG: NULL 
   TABLE_SCHEMA: yazd 库名 
     TABLE_NAME: yazduserperm 表名 
     TABLE_TYPE: BASE TABLE 
         ENGINE: MyISAM 
        VERSION: 10
     ROW_FORMAT: Fixed 
     TABLE_ROWS: 32
 AVG_ROW_LENGTH: 13 
    DATA_LENGTH: 416
MAX_DATA_LENGTH: 3659174697238527 
   INDEX_LENGTH: 3072
      DATA_FREE: 0 
 AUTO_INCREMENT: NULL
    CREATE_TIME: 2012-07-13 16:21:00
    UPDATE_TIME: 2012-07-13 16:25:12
     CHECK_TIME: 2012-07-13 16:25:12
TABLE_COLLATION: latin1_swedish_ci
       CHECKSUM: NULL 
 CREATE_OPTIONS:
  TABLE_COMMENT:

====查询数据库库名、表名、字段名 information_schema.columns===
mysql> select * from information_schema.columns\G
mysql> select column_name from INFORMATION_SCHEMA.columns; 
mysql> select column_name from INFORMATION_SCHEMA.columns where table_schema='dvwa' and table_name='users';
mysql> select column_name from INFORMATION_SCHEMA.columns where table_name='USER_PRIVILEGES' 
mysql> select column_name from INFORMATION_SCHEMA.columns where table_name='SCHEMA_PRIVILEGES' 

e.g. ********* 4682. row ********* 
           TABLE_CATALOG: NULL
            TABLE_SCHEMA: yazd 库名 
              TABLE_NAME: yazduserprop 表名
             COLUMN_NAME: propValue 字段名
        ORDINAL_POSITION: 3 
          COLUMN_DEFAULT: NULL
             IS_NULLABLE: NO 
               DATA_TYPE: varchar 
CHARACTER_MAXIMUM_LENGTH: 255 
  CHARACTER_OCTET_LENGTH: 255 
       NUMERIC_PRECISION: NULL
           NUMERIC_SCALE: NULL 
      CHARACTER_SET_NAME: latin1 
          COLLATION_NAME: latin1_swedish_ci 
             COLUMN_TYPE: varchar(255) 
              COLUMN_KEY:
                   EXTRA: 
              PRIVILEGES: select,insert,update,references
          COLUMN_COMMENT:
          4682 rows in set (0.13 sec)

55
NUMERIC_PRECISION: NULL
NUMERIC_SCALE: NULL
CHARACTER_SET_NAME: latin1
COLLATION_NAME: latin1_swedish_ci
COLUMN_TYPE: varchar(255)
COLUMN_KEY:
EXTRA:
PRIVILEGES: select,insert,update,references
COLUMN_COMMENT:
4682 rows in set (0.13 sec)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值