mysql/mariadb
定义环境变量
临时定义环境变量
export PATH=$PATH:/usr/local/mariadb/bin/
/usr/local/mariadb/bin/ 这个路径是安装mysql的包所在路径,我安装的是mariadb
永久定义环境变量
vim /etc/profile
增加代码
export PATH=$PATH:/usr/local/mariadb/bin/
生效文件
source /etc/profile
设置更改root密码
指定使用账号root密码登录,-u后面为账号,-p后面可以跟密码,没有特殊字符的可以不加单引号,有特殊字符的需要加单引号;
默认是没有密码的
mysql -uroot
mysql -uroot -p'password'
设置密码
在空密码下指定密码为admin123
mysqladmin -uroot password 'admin123'
在有密码的情况下修改密码 旧密码admin123修改为admin@123
mysqladmin -uroot -padmin123 password 'admin@123'
忘记root密码
编辑配置文件
vim /etc/my.cnf
在[mysqld]下增加一行skip-grant
[mysqld]
skip-grant //跳过密码验证
重启mysql服务
/etc/init.d/mysqld restart
空密码登录mysql,在mysql里面更新新密码
mysql -uroot
use mysql; //进入mysql库
desc user; //查看user表的字段,里面可以找到password和
authentication_string这两个字段
5.6版本以前使用password字段存放密码
update user set password=password('admin123') where user='root';
5.7版本以后使用authentication字段存放密码
update user set authentication_string=password('admin123') where
user='root';
我安装的是mariadb10.4.14版本,之前不知道为什么按照上面两种方法都不行,现在用第三种方法验证成功:
前面操作一样无密码进入数据库,然后直接执行:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');
重新授权
flush privileges;
数据库设置完成后,退出quit;
设置配置文件
vim /etc/my.cnf
删除参数
skip-grant
重启mysql服务
/etc/init.d/mysqld restart
测试验证
mysql -uroot -padmin123
使用密码admin23登录成功
连接MySQL
常用的连接命令
连接本机
mysql -uroot -padmin123
连接远程机器127.0.0.1为ip,3306为端口
mysql -uroot -padmin123 -h127.0.0.1 -P3306
使用sock方式连接,只适合本机连接
mysql -uroot -padmin123 -S/tmp/mysql.sock
使用-e参数,不进入数据库,在shell环境下使用mysql内部命令查看所有数据库
mysql -uroot -padmin123 -e "show databases"
MySQL常用命令
必须登录mysql才能使用的命令 使用命令后面必须加;号
查询库 show databases; 切换库 use mysql; 查看库里的表 show tables; 查看表里的字段 desc tb_name; 查看建表语句 show create table tb_name\G; 查询mysql所有用户和限制主机select user,host from user; 查询指定用户的权限show grants for '用户名'@'限制ip'; 查看当前用户 select user(); 查看当前使用的数据库 select database(); 创建库 create database db1; 创建表 use db1; create table t1(id int(4), name char(40)); 查看当前数据库版本 select version(); 查看数据库状态 show status; 查看各参数 show variables; show variables like 'max_connect%'; 修改参数 set global max_connect_errors=1000; 查看队列 show processlist; show full processlist;
查询库
MariaDB [mysql]> show databases;
切换库
MariaDB [mysql]> use mysql;
查看库里面的表
MariaDB [mysql]> show tables;
查看表里面的字段
注意:格式是 desc [表名]; 例如:desc user; 查看的就是user表里面的字段 MariaDB [mysql]> desc user;
查看创建表的语句
MariaDB [mysql]> show create table user\G;
查询mysql所有用户和限制主机
MariaDB [mysql]> select user,host from user;
+-------------+-----------+
| User | Host |
+-------------+-----------+
| | jinkai03 |
| | localhost |
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
+-------------+-----------+
5 rows in set (0.002 sec)
查看当前是哪个用户
select user();
MariaDB [mysql]>select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
查看当前所使用的数据库
select database();
MariaDB [mysql]> select database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
创建一个新库
create database 库名;
MariaDB [mysql]> create database db1;
Query OK, 1 row affected (0.00 sec)
创建一个新表
mysql> use db1; //切换到db1库
mysql>create table t1(id
int(4),name
char(40)); //注意,这里的字段名id和name,表t1
查看当前数据库的版本
MariaDB [mysql]>select version();
查看mysql当前状态
MariaDB [mysql]>show status;
很多参数都是可以在/etc/my.cnf中定义的,并且有部分参数是可以在线编辑的
查看mysql的参数
MariaDB [mysql]>show variables;
修改mysql的参数
MariaDB [mysql]>show variables like 'max_connect%'; //模糊查询
max_connect,后面必须加%
MariaDB [mysql]>set global max_connect_errors = 1000; //修改
max_connect_errors参数为1000
MariaDB [mysql]>show variables like 'max_connect_errors';
查看当前mysql服务器队列
MariaDB [mysql]>show processlist;
MariaDB [mysql]>show full processlist; //查看哪些用户在连接数据库(完整版)
Mysql用户管理
创建用户
grant all on . to 'user1'@'localhost' identified by 'admin123';
其中,all表示所有的权限(如读、写、查询、删除等操作);.有两个*,前者表示所有的数据库,后者表示所有的表;identified by后面跟密码,用单引号括起来。这里的user1特指localhost上的user1
grant all on db1.* to 'user2'@'%' identified by 'admin123';
用户和主机的IP之间有一个符号@。另外,命令中主机IP可以用%,指定权限为数据库db1下的所有表。
grant INSERT,UPDATE,SELECT on . to 'user3'@'127.0.0.1' identified by 'admin123';
也可以指定权限INSERT,UPDATE,SELECT
flush privileges;
刷新授权
查看当前用户权限
show grants;
show grants for 'user1'@'192.168.186.144';
常用的sql语句
select:查看; insert:插入; update:更改; drop:删除;
查看:
统计指定表的行数;
select count(*) from mysql.user; //count()表示统计行数;*代表所有;
MariaDB [(none)]> select count(*) from mysql.user;
+----------+
| count(*) |
+----------+
| 8 |
+----------+
1 row in set (0.001 sec)
查看指定表的内容
select * from mysql.db; 它表示查询MySQL库的db表中的所有数据。当然也可以查询单个字段或者多个字段,如下所示:
select db from mysql.db; //查找mysql库下db表里面db列的内容;
select db,user from mysql.db; //查找mysql库下db表中db列与user列的内容;
模糊查询
select * from mysql.db where host like '192.168.%'; //查找mysql.db下带有192.168.字样的列出来
插入数据
insert into db1.t1 values (1,'abc');
//在db1.t1中,插入两条数据,第一条为数字1,第二条为字符串abc;
MariaDB [(none)]> select * from db1.t1;
+------+------+
| id | name |
+------+------+
| 1 | abc |
+------+------+
1 row in set (0.00 sec)
更改数据
update db1.t1 set name='aaa' where id=1;
//将db1.t1的id为1的 name内容更改为字符串aaa
MariaDB [(none)]> select * from db1.t1;
+------+------+
| id | name |
+------+------+
| 1 | aaa |
+------+------+
1 row in set (0.00 sec)
清空某个表的数据
MariaDB [(none)]> truncate table db1.t1;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> select * from db1.t1;
Empty set (0.00 sec))
删除表
MariaDB [(none)]> drop table db1.t1;
Query OK, 0 rows affected (0.00 sec)
删除数据库
MariaDB [(none)]> drop database db1;
Query OK, 0 rows affected (0.01 sec)
MySQL数据库的备份与恢复
备份指定数据库
mysqldump -uroot -p'admin23' mysql > /tmp/backup/mysqlbak.sql
//将名为mysql的数据库备份到指定目录下
恢复数据库
mysql -uroot -p'admin23' mysql < /tmp/backup/mysqlbak.sql
//将指定目录下的备份文件恢复为mysql数据库
备份表
mysqldump -uroot -p'admin23' mysql user >/tmp/backup/user.sql
//将mysql下的user表备份到指定目录
恢复表
mysql -uroot -p'admin23' mysql < /tmp/backup/user.sql
//将指定目录下的表恢复到mysql库下
备份所有数据库
mysqldump -uroot -p'admin23' -A > /tmp/backup/123.sql
//将所有数据库备份到指定目录
只备份表结构
mysqldump -uroot -p'admin23' -d mysql > /tmp/backup/mysql-biaojg.sql