一、MySQL用户和权限管理:
1、MySQL中用户的定义:
格式:user@地址域
xiaoxi@'%'
xiaoxi@'10.0.0.%'
xiaoxi@'10.0.0.0/255.255.254.0'
xiaoxi@'10.0.0.5%'
xiaoxi@'10.0.0.55'
xiaoxi@'db01'
root@'localhost'
2、用户管理
创建用户
mysql> create user xiaoxi@'10.0.0.%' identified by '123456';
修改用户密码
mysql> alter user xiaoxi@'10.0.0.%' identified by '123';
删除用户
mysql> drop user xiaoxi@'10.0.0.%';
查看用户
mysql> select user,host,authentication_string from mysql.user;
3、 权限管理
权限:
SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
ALL : 以上所有权限,一般是普通管理员拥有的
with grant option:超级管理员才具备的,给别的用户授权的功能
作用对象 | 作用范围 |
---|---|
*.* | 所有库和表 |
wordpress.* | WordPress库下的所有表 |
wordpress.user | wordpress库下的user表 |
MySQL8.0版本之后就不能再授权的时候更改密码了,只能一步一步的来了
格式: grant 权限 on 作用对象(库或表) to 用户 identified by '123';
授权案例
1)、需求1:开一个用户,允许wordpress用户,通过10网段登录管理wordpress库下的所有表,密码是123.
mysql> grant all on wordpress.* to wordpress@'10.0.0.%' identified by '123';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql>
2)、授权一个应用用户app,能够通过10网段,应用app下所有表,密码123。
mysql> grant select,insert,update on app.* to app@'10.0.0.%' identified by '123';
3)、查看用户权限语句
mysql> show grants for root@'localhost'
4)、收回用户的权限
mysql>revoke drop,delete on *.* from xiaoxi@'10.0.0.%';
4、连接接管理:Linux 下连接mysql 有两种方式
1、本地套接字(socket)连接(默认是省略 -S参数)
(a)、只允许本地登录使用
(b)、登录的用户必须提前创建本地用户如:xxx@localhost
[root@db01 ~]# mysql -uroot -p123 -S /tmp/mysql.sock
2、TCP/IP (网络IP+port)
[root@db01 ~]# mysql -uroot -p123 -h 10.0.0.52 -P 3306
5、MySQL客户端功能
5.1 登录MySQL后使用help命令进行查看帮助
客户端命令 | 说明 |
---|---|
? | 相当于help 命令 |
ctrl+L | 清理屏幕 |
exit | 相当于ctrl+D |
\ d | 定义结尾符号 |
\G | 结尾用 使用\G ,以列方式显示内容(表中) |
\g | 结尾加上\g,表示忽略结束符 |
system | 使用系统中的一些命令:如mysql>system vim /etc/passwd |
use | use database ,进入某个库中 |
() | 结尾加(),查看当前库 如:mysql>select database() |
source | 将库或者表导入mysql中 |
5.2 mysql 命令在客户端使用 使用-e 参数
mysql客户端参数 | 说明 |
---|---|
-u | 指明登录的用户名 |
-p | 指明登录使用的密码 |
-P | 指明端口 |
-h | 指明登录的地址 |
-e | 在命令行使用sql语句,配合 -u -p -P是一个 |
-S | 指明sock文件位置 |
< | 像数据库中导入库或者表 |
使用-e参数举例
[root@db01 ~]# mysql -uroot -p123456 -e "show databases;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| world |
+--------------------+
[root@db01 ~]#
5.3 向数据库中导入库:
命令行中:
[root@DB02_52 ~]# mysql -uroot -p123 </root/word.sql
mysql 客户端下:
mysql>source /root/word.sql
6 、mysqladmin使用
mysqladmin --help 使用帮助
修改密码:mysqladmin -uroot -p123 password 123456 修改mysql数据库中root用户的密码为123456
7、mysqdump(主要用来做备份使用) 命令的使用
mysqldump -uroot -p123456 -A --master-data=2 --single-transaction -R --triggers -E >/tmp/full.sql
8、mysql配置文件
8.1 mysql配置文件读取顺序
mysql默认按照以下顺序来读取配置文件,如果以下配置文件里有冲突,最终以最后读取配置文件为准。
[root@db01 ~]# mysql --help --verbose | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
[root@db01 ~]#
8.2 mysql配置文件参数
[root@DB02_52 /data/mysql]# cat /etc/my.cnf
[mysqld] #mysql服务端标签,影响的是mysql的启动,还可以用[mysql_safe]
basedir=/application/mysql #软件目录的存放位置
datadir=/data/mysql #数据目录的存放位置
socket=/tmp/mysql.sock #服务启动时生成的sock文件存放位置,本地客户端连接使用
log_error=/data/mysql/mysql.log#错误日志的存放位置
server_id=6 #服务的ID号,主要实在mysql主从复制时使用
port=3306 #mysql服务的端口号
log_bin=/data/mysql/mysql-bin #二进制文件存放位置
user=mysql #mysql服务启动时的用户
[mysql] #mysql 客户端标签
socket=/tmp/mysql.sock #客户端连接的sock文件的位置
[root@DB02_52 /data/mysql]#
8.3 其它的几个参数
在配置文件中(服务端行)加入skip_name_resolve 表示跳过 本地hosts文件解析
配置文件中加入 prompt=3306[\d]>
[root@DB02_52 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
3306[(none)]>