mysql基础之mariadb的安装,连接,用户,密码,权限设置语句详解
一、mariadb安装
1、配置mariadb源:
[root@ren7 ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
2、yum安装(下载时该大写的必须大写):
[root@ren7 ~]# yum -y install MariaDB
3、安装完成后需要重启mariadb:
[root@ren7 ~]# systemctl restart mariadb
4、初始化数据库(安全配置向导):
[root@ren7 ~]# mysql_secure_installation
运行mysql_secure_installation会执行几个设置:
--为root用户设置密码
--删除匿名账号
--取消root用户远程登录
--删除test库和对test库的访问权限
--刷新授权表使修改生效
5、客户端程序:
mysql---交互式的client工具
mysqldump---备份工具,基于mysql协议向mysqld服务发起查询请求,并将查询的所有数据转换成insert等写操作语句保存在文件当中
mysqladmin---基于mysql协议管理mysqld
mysqlimport---数据导入工具
二、启停数据库语句
1、启动服务
[root@ren7 ~]# systemctl start mariadb
2、关闭服务
[root@ren7 ~]# systemctl stop mariadb
3、重启服务
[root@ren7 ~]# systemctl restart mariadb
4、mysql的重启
[root@ren7 ~]# systemctl restart mysqld
三、连接数据库语句
1、mysql -u root -p
表示使用root用户(mysql的root用户,非系统root用户)连接到mysql数据库,-u表示指定用户,-u和root用户名之间的空格可以省略,-p表示将会提示输入密码
2、mysql -u root -p123
表示使用root用户连接数据库,并且直接以明文的方式指定密码,123为密码,-p与密码之间不能有空格
3、mysql -u root -D mysql -p 123
表示在连接mysql数据库时,可以直接指定将要登录的具体的数据库,使用-D指定数据库名称
4、mysql -u root -p -S /var/lib/mysql/mysql.sock
在本地连接到mysql数据库时,可以指定通过哪个套接字文件连接到数据库,通过-S指定套接字位置
5、mysql -u root -p -h 192.168.1.103 -P 3306
在连接到mysql数据库时,可以指定要连接到远程的哪一台主机的mysql上,也可以指定端口,-h指定mysql主机,-P大写,指定mysql服务对应的端口,连接的前提是已经授权当前客户端的IP地址能够连接到数据库
6、mysql -u root -p123123 -e 'use mysql; select user,host,password from user;'
连接数据库的同时执行对应命令,并且返回命令对应的结果,并不会进入mysql提示符
7、退出连接:
exit或者quit(\q)或者Ctrl+D
连接数据库的常用选项:
--host=host_name, -h host_name:服务端地址;
--user=user_name, -u user_name:用户名;
--password[=password], -p[password]:密码
--port=port_num, -P port_num:服务端端口;
--socket=path, -S path:套接字位置;
--database=db_name, -D db_name:要进入的数据库名称;
--compress, -C:数据压缩传输;
--execute=statement, -e statement:非交互模式执行SQL语句;
--vertical, -E:查询结果纵向显示;
--protocol={TCP|SOCKET|PIPE|MEMORY}
四、用户管理语句
1、mysql的用户账号格式:username@host
上述格式表示username对应的用户能够通过哪个host登录mysql
host:此mysql用户能够通过哪些客户端主机IP登录当前服务器上的mysql服务,对于mysql来说,host可以为主机名,也可以为IP地址,但是,mysql认为主机名和IP地址属于不同的主机;
支持通配符,常用得通配符:
_: 表示任意单个字符
%: 表示任意长度的任意字符
例子:
root@’192.168.%.%’
2、查询用户
查看当前用户:select user();
MariaDB [ren]> select mysql.user.user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| ren4 | % | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | ::1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| ren3 | 127.0.0.1 | *14B20454C89BC49370889C5B1CE9441993ADFB14 |
| ren5 | localhost | |
| ren6 | ren7 | |
| ren7 | ren7 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+------+-----------+-------------------------------------------+
8 rows in set (0.00 sec)
3、创建用户
方法一:使用create user命令创建用户
MariaDB [mysql]> create user 'ren6'@'%';
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> create user 'ren7'@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
方法二:在授权数据库的同时,如果对应的用户不存在,那么mysql将会自动创建对应的用户
MariaDB [ren]> grant all on ren.* to ren10@'%' identified by 'ren10';
Query OK, 0 rows affected (0.00 sec)
方法三:直接在mysql库的user表中插入一条记录,这种方法使用较少,且在设置了严格的sql-mode以后就无法使用
MariaDB [ren]> insert into mysql.user(user,host,password) values('ren11','%',password('123'));
ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value
当前数据库的sql-mode设置了严格检查(如RADITIONAL)
4、删除用户
通常使用drop命令删除用户,也可以直接删除mysql.user表中对应用户的记录;drop删除的更加彻底。
方法一:使用drop user命令删除对应用户(用户及用户对应的权限都将被删除)
MariaDB [ren]> drop user ren3@127.0.0.1;
Query OK, 0 rows affected (0.00 sec)
方法二:使用delete语句删除mysql.user表中的用户对应的记录,但是使用此方法会有相关信息残留
MariaDB [ren]> delete from mysql.user where user='ren10' and host='%';
Query OK, 1 row affected (0.00 sec)
但是,如果某些数据库的权限已经授权给了“ren10@’%’”用户,那么,在mysql.db表中,“ren10@’%’”用户对应的权限将不会被删除,当管理员想要再次创建“ren10@’%’”用户时,则会出现出问题,如果管理员想要使用create user命令再次创建同名用户时,可能会出现如下错误:
MariaDB [ren]> create user ren10@'%';
ERROR 1396 (HY000): Operation CREATE USER failed for 'ren10'@'%'
解决方案一:删除mysql.db表中原“ren10@’%’”用户残留的权限数据后,使用flush privileges命令刷新,然后再次使用create user命令创建新的“ren10@’%’”用户(也就是将原“ren10@’%’”用户的残留数据删除干净,相当于drop)
解决方案二:使用grant命令授权“ren10@’%’”用户能够访问任意数据库即可,如果授权用户的数据库与原来残留的权限所对应的数据库不是同一个库,残留的权限就会被新的创建的“ren10@’%’”用户所获得;因为新用户和旧用户名称相同,所以新的“ren10@’%’”用户会继承被删除同名用户的权限。
5、重命名用户
格式:rename user OldNAME to NewNAME;
重命名后的用户密码以及权限不会发生改变,只有用户名会发生改变。
五、密码管理语句
修改或设置mysql用户的密码有以下几种方法:
方法一:管理员在系统命令行中使用mysqladmin命令设置mysql用户的密码。
语法格式:mysqladmin -u用户名 -p旧密码 password
[root@ren7 ~]# mysqladmin -uren7 -p123 password123456
方法二:set password for '用户名'@'IP地址' = Password('新密码')
MariaDB [(none)]> set password for ren5@'localhost'=password('123123');
Query OK, 0 rows affected (0.00 sec)
方法三:修改mysql.user表中对应用户的password字段
命令格式:update mysql.user set password=password(‘PASSWORD’) where user=’USERNAME’
示例:
MariaDB [(none)]> update mysql.user set password=password('111111') where user='ren7';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
注意:有的版本中的password替换为了authentication_string
六、权限管理
1、授权命令
语法格式:
GRANT ALL [PRIVILEGES] ON db.tbl TO 'username'@'host' IDENTIFIED BY 'password';
其中,db表示数据库名字,可以使用*通配符,tbl为表的名称,可以使用*通配符。
(1)给ren5用户添加查询,创建,更新,删除的权限给test03库的grade表(在任意主机上)
grant select,create,update,delete on test03.grade to ren5@'%';
(2)给ren5赋予test03数据库的grade表最高权限(在任意主机上)
grant all privileges on test03.grade to ren5@'%';
(3)给ren5赋予ren数据库的所有权限,在192.168.0.0网段中(只允许ren5用户通过该网段的地址链接ren数据库)
grant all privileges on ren.* to ren5@’192.168.%.%’ identified by ‘123’
(4)将同样的权限同时授权给多个用户
grant select on ren.* to ren5@localhost,ren7@localhost;
(5)只对某张表的某个字段授权
grant select (name,age) on ren5@localhost;
(6)如果ren数据库中有一张表的名称为test,同时,ren数据库中有一个函数也叫test,那么可以通过function关键字只授权给用户test函数,而不将表的权限授予用户
grant execute on function ren.test to ren5@’192.168.11.%’;
(7)可以使用procedure关键字,指明被操作的对象是存储过程
grant execute on procedure ren.test to ren5@’localhost’;
(8)使用function关键字和procedure关键字可以对函数或者存储过程授权,使用view关键字可以对视图进行授权
(9)当一个用户被创建时,mysql会自动授予其usage权限。usage权限只能用于登录数据库,不能执行其他操作
(10)如果用户有可能会跨越不安全的网络连接到数据库,可以强制用户使用ssl建立会话,命令如下:
grant usage on *.* to ‘ren5’@’192.168.11.11’ require ssl;
取消ssl连接限制:
grant usage on *.* to ‘ren5’@’192.168.11.11’ require none;
(11)如果在授权ren5用户时,搭配了grant选项,则ren5用户有权将已拥有的权限授予给其他用户(一般不会使用)
grant select on ren.* to ren5@’192.168.%.%’ with grant option;
(12)管理员可以通过选项对用户进行一些限制
max_queries_per_hour #限制用户每小时执行的查询语句数量;
max_updates_per_hour #限制用户每小时执行的更新语句的数量;
max_connections_per_hour #限制用户每小时连接数据库的次数;
max_user_connections #限制用户使用当前账号同时连接服务器的连接数量;
使用flush privileges命令刷新
2、查看授权
查看授权可以从两方面查看:1、从用户的角度查看授权,查看权限表示查看对应用户都能操作哪些数据库;2、从数据库的角度查看权限表示指定数据库都对哪些用户开放了哪些权限
(1)从用户的角度查看授权的语句
语法格式:
show grants for 用户名;
(2)从数据库的角度查看授权:
语法格式:
select * from mysql.db where Db="你要查看的数据库"
(3)查看自己的权限
show grants;
3、删除授权
删除授权/撤销授权的常用语句:
revoke "要移除的权限" on 数据库.表 from 用户@host;
例子:
MariaDB [mysql]> revoke all on ren.* from ren4@'%';
mysql基础之mariadb的安装,连接,用户,密码,权限设置语句详解的更多相关文章
- 【转】MySQL用户管理及SQL语句详解
[转]MySQL用户管理及SQL语句详解 1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysq ...
- mysql基础:登录退出,修改用户密码,添加删除用户
今天刚开始学习mysql,最先接触用户管理,给大家分享下 注:mysql中命令的大小写都可以的 ==========登录退出相关=================== root@jack-deskto ...
- MySQL用户管理及SQL语句详解
1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysql.user; +--------+--- ...
- MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解
本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL逻辑架构 1.逻辑架构图 基于下面的逻辑架构图,可以大致熟悉MySQL各个架构组件之间的协同工作关系. 很经典的C/S架构风格, ...
- MySQL基础篇(04):存储过程和视图,用法和特性详解
本文源码:GitHub·点这里 || GitEE·点这里 一.存储过程 1.概念简介 存储程序是被存储在服务器中的组合SQL语句,经编译创建并保存在数据库中,用户可通过存储过程的名字调用执行.存储过程 ...
- MYSQL 更改数据库data存储目录 创建用户 创建权限 设置远程访问的权限.
一. 怎么更改数据库data存储目录: 1. 安装MYSQL. 2. 切换到 C:\Program Files\MySQL\MySQL Server 5.6 3. 新建my.ini. 加入如下配置: ...
- 无法连接mysql,请检查mysql是否已启动及用户密码是否设置正确
安装好后,登录后台提示 无法连接mysql,请检查mysql是否已启动及用户密码是否设置正确 检查mysql是否启动netstat -lnpt是否有3306端口? 一 有A 检查/www/wdlinu ...
- mysql基础篇 - SELECT 语句详解
基础篇 - SELECT 语句详解 SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ...
- MySQL权限授权认证详解
MySQL权限授权认证详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL权限系统介绍1>.权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删除 ...
随机推荐
- ternux的ssh和ftp
ssh的连接 pkg install ssh ssh -p 8022 username@hostname_ip ftp的创建 安装python 升级pip python -m pip install ...
- ES6转ES5(Babel转码器)
ES6转ES5(Babel转码器) 前提:必须在VScode中已经安装了Node.js 官网:https://nodejs.org/en/ 一.安装命令行转码工具 npm install --glob ...
- java多种文件复制方式以及效率比较
1.背景 java复制文件的方式其实有很多种,可以分为 传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,BufferedO ...
- 前端缓存API请求数据
1. 背景 在一些项目中,有时候会出现不同模块重复请求大量相同api接口的情况,特别是在一些功能相似的后台管理页面中.以下面这几个页面为例,每次进入页面都需要请求等大量重复的下拉框数据,下拉框数据短时 ...
- nginx+nginx-upsync-module实现配置动态更新
模块微博开源:https://github.com/weibocom/nginx-upsync-module#upsync 实现方案: nginx+consul nginx+etcd Installa ...
- P2P技术(一):NAT
1.NAT由来 NAT是一项神奇的技术,说它神奇在于它的出现几乎使IPv4起死回生.在IPv4已经被认为行将结束历史使命之后近20年时间里,人们几乎忘了IPv4的地址空间即将耗尽这样一个事实--在新技 ...
- ajax--实现异步请求,接受响应及执行回调
ajax最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页的内容 ajax指是一种创建交互式网页应用的网页开发技术,其实就是实现前后端交互. 1)ajax是异步javascr ...
- MYSQL中TIMESTAMP类型的默认值理解
MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样. 1.自动UPDATE 和INSERT 到当前的时间:表:----------- Table Create Table ...
- hdu4179 限制最短路
题意: 这个题目估计读懂题意就ok了,关键是题意蛋疼,像我这样的英语渣渣活着可真难啊,题意大体是这样,给你n个点m条无向边,给你起点和终点,让你求从起点到终点的最短路径,其中有一些限制: ...
- 初探SQL注入需要知道的5个问题
SQL注入产生原理 可控变量(注入点,就是传参) 带入数据库查询 变量未存在过滤或过滤不严谨 例子: 获取admin表的pass里面的数据 select * from users where id=1 ...