Mysql-常用命令
更改mysql密码:
[root@docker01 ~]# mysqladmin -uroot -p password mysql【新密码】
Enter password: ##输入的是原先mysql的密码
卸载mysql:yum remove mariadb-server
安装:yum install mariadb-server
[root@docker01 ~]# rpm -qif `which mysql` #返回软件包的有关信息
[root@docker01 ~]# rpm -qf `which mysql` #返回软件包的全名
mariadb-10.1.20-2.el7.x86_64
[root@docker01 ~]# rpm -qlf `which mysql` #返回软件安装的文件列表
[root@docker01 ~]# rpm -ql mariadb-server-10.1.20-2.el7.x86_64
/var/lib/mysql #数据库存储的地方
/var/log/mariadb
[root@docker01 ~]# systemctl start mariadb # 开启服务
[root@docker01 ~]# systemctl enable mariadb # 设置为开机自启动服务
首次安装需要进行数据库的配置:
[root@docker01 ~]# mysql_secure_installation
Enter current password for root (enter for none): # 输入数据库超级管理员root的密码(注意不是系统root的密码),第一次进入还没有设置密码则直接回车 Set root password? [Y/n] # 设置密码,y New password: # 新密码 Re-enter new password: # 再次输入密码 Remove anonymous users? [Y/n] # 移除匿名用户, y Disallow root login remotely? [Y/n] # 拒绝root远程登录,n,不管y/n,都会拒绝root远程登录 Remove test database and access to it? [Y/n] # 删除test数据库,y:删除。n:不删除,数据库中会有一个test数据库,一般不需要 Reload privilege tables now? [Y/n] # 重新加载权限表,y。或者重启服务也许
[root@docker01 ~]# mysql -uroot -prcs551552?
[root@docker01 ~]# mysql -uroot -prcs551552? -h IP -P port
MariaDB [(none)]> show databases; #查看数据库中有哪些库
MariaDB [(none)]> use mysql; #进入mysql这个库;use test进入test库
MariaDB [mysql]> show tables; #显示mysql这个库中有哪些表
MariaDB [mysql]> describe user; #显示user这个表的表结构组成
MariaDB [mysql]> select host,user,password from user; #显示user表中的host,user,password字段
MariaDB [mysql]> select host,user,password from mysql.user;
刷新权限表:
MariaDB [mysql]> flush privileges;或者[root@docker01 ~]# systemctl restart mariadb
MariaDB [(none)]> show processlist; #查看连接到我们数据库的信息
[root@docker01 ~]# mysql -uroot -pmysql -e "show variables like 'server_id'" #免交互式在linux命令行查询数据库内容
[root@docker01 ~]# mysql -uroot -pmysql -e "show databases;" #不登录数据库中查看
MariaDB [(none)]> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| root | 127.0.0.1 | *FF867C932AFB0CFF7F959E31A867C1807FBB25B7 |
| root | ::1 | *FF867C932AFB0CFF7F959E31A867C1807FBB25B7 |
+------+-----------+-------------------------------------------+
user:使用哪个用户登录数据库;用户的功能,1是登录数据库,2是管理数据库对象
host:该用户使用哪个IP或者哪些IP可以登录这台数据库
插入insert \ 创建create\ 删除delete \更新update \查看select \drop
grant all on *.* to repl@'192.168.0.%' identified by '123';
grant 为固定写法
all 是权限,所有权限;也可以写成:UPDATE、INSERT、DELETE、CREATE
*.*代表所有库;test.*代表test库下的所有表设置权限
repl@'192.168.0.%' 给哪个用户设置权限
identified by '123' 设置密码
MariaDB [(none)]> create user mysql1@'192.168.23.%' identified by '123'; #创建个mysql1用户,允许在192.168.23网段的机器上可以登录,密码是123
MariaDB [(none)]> drop user mysql1@'192.168.23.%' ; # 删除用户
MariaDB [(none)]> show grants for mysql@'192.168.23.%'; #查看用户权限
MariaDB [(none)]> grant insert,create on mysql.* to mysql1@'192.168.23.%' identified by '123'; 给用户添加权限
MariaDB [(none)]> revoke insert on mysql.* from mysql1@'192.168.23.%'; #回收权限,将mysql1用户对mysql这个库的所有表的插入权限回收
MariaDB [(none)]> select user,host,password from mysql.user; #以列表形式打印
MariaDB [(none)]> select user,host,password from mysql.user\G #以key-value形式打印
MariaDB [(none)]> tee /tmp/mysql.log 执行这个操作后,下面所有的操作都会被记录到当前主机的/tmp/mysql.log中
MariaDB [(none)]> create database csren; #创建一个库
MariaDB [(none)]> help create database #查看create database 这个命令怎么用
MariaDB [(none)]> show create database csren; #看下创建过程
创建表步骤:
MariaDB [(none)]> use csren; #切换库,要在哪个库下创建表,就切换到哪个库
MariaDB [csren]> create table t1(id int,name varchar(20)); #创建一个叫t1的表,定义两个列项和数据类型
MariaDB [csren]> show tables; #查看csren这个库有哪些表
MariaDB [csren]> describe t1; #查看t1表结构.或者desc t1
MariaDB [csren]> drop table t1; #删除t1整个表
MariaDB [csren]> alter table t1 add age int; #给现有的t1表再增加一列数据
MariaDB [csren]> alter table t1 add level int,add score int; #添加两列内容
MariaDB [csren]> alter table t1 add sex varchar(20) after id; #在id列后添加一列sex
MariaDB [csren]> alter table t1 add sid int first; #在第一列添加sid
MariaDB [csren]> alter table t1 drop level; #删除level列
MariaDB [csren]> alter table t1 modify score varchar(20); #修改score的数据类型
MariaDB [csren]> alter table t1 change score score_1 varchar(20); #修改t1表的score列名为score_1
MariaDB [csren]> rename table t1 to t2; #修改表名
MariaDB [csren]> alter table t2 rename to t3; #这个和上面改表明是一样的
DML主要针对数据库表中的行进行操作:insert \delete \update
要是往表中写数据,就要先看下表中结构是什么样
先use csren切换到csren这个库
MariaDB [csren]> insert into t3 values(1,'M','ren',18,72); #因为数据结构是5个,所以插入数据的时候也要写五个
MariaDB [csren]> select * from t3;
MariaDB [csren]> insert into t3 values(2,'M','ren',18,72),(3,'W','LI',34,23); #插入多行
MariaDB [csren]> select * from t3;
MariaDB [csren]> insert into t3(id) values(4); #只对某列数据进行插入
更新表中的某个值:
MariaDB [csren]> update t3 set name='cheng' where id=2; #将id=2那一行中的name设置成cheng
MariaDB [csren]> delete from t3 where id=4; #删除某一行
MariaDB [csren]> truncate table t3; #清空某个表,物理上清空
--select条件查询配合where
MariaDB [csren]> select * from t3 where name='ren'; #从t3表中查询name=ren的一行数据
MariaDB [csren]> select * from t3 where id=2; #查找ID=2的数据;条件为字符串的时候需要用引号引起来,mysql不区分大小写
MariaDB [csren]> select * from t3 where id=2 and name='cheng'; #与条件查询,两个条件都满足才能打印
MariaDB [csren]> select * from t3 where id=2 or name='ren'; #满足一个条件的都会打印,意思是满足条件id=2的打印出来,name=ren的也打印出来
MariaDB [csren]> select * from t3 where id between 1 and 3; #查询ID从1-3的值
MariaDB [csren]> select * from t3 where name in ('ren','cheng'); #查询name字段是ren或者cheng
MariaDB [csren]> select * from t3 where name like 're%'; #查找name中是re*的字段的值
MariaDB [csren]> select * from t3 where name like '%e%';
MariaDB [csren]> select * from t3 where name like '%e%' order by id desc; #在t3表中,查找name中包含e的字段,且按id降序排列输出;asc升序排列
MariaDB [csren]> select * from t3 where name like '%e%' order by id desc limit 3; #limit 3代表只显示前3行