02-MySQL基础管理

2019-12-17  本文已影响0人  UncleZ_strive

1. 用户管理

1.作用

登录
管理对象

2.长成什么样?

1.用户名@'白名单'

3.用户管理

8.0+ 版本: 必须先创建用户再授权.
8.0以前: 可以grant 授权时自动创建用户.

2. 权限管理

1.MySQL权限列表

查看权限列表 mysql> show privileges;

2.授权和回收权限

权限作用范围 :
. ====> 一般是管理员会设置的方法
wordpress.* ====> 一般是业务用户会设置的方法
wordpress.t1 ====> 一般是业务用户户设置的方法

3.企业授权案例
4.root管理员密码忘记或被篡改如何处理?
[root@db01 data_3306]# systemctl stop mysqld
[root@db01 data_3306]# mysqld_safe  --skip-grant-tables  --skip-networking  &
[root@db01 data_3306]# mysql
直接修改密码会报错
mysql> alter user root@'localhost' identified by '123456';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

刷新MySQL的系统权限相关表
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '123456';
[root@db01 data_3306]# systemctl restart mysqld
5.查询用户权限
mysql> show grants for app@'10.0.0.%';
6.回收权限
mysql> revoke delete,drop on app.* from 'app'@'10.0.0.%';

3. MySQL的连接管理

1.自带客户端工具 mysql
-u  用户名 
-p  密码
-h  IP
-P  端口
-S  socket位置
-e  免交互
<   导入SQL脚本

例子:
(1) TCP连接串远程登录

mysql> grant all on *.* to oldguo@'10.0.0.%' identified by '123';
[root@db01 data_3306]# mysql -uroot -p -h 10.0.0.51 -P 3306

需要提前创建好远程用户

(2) Socket连接方式

mysql> grant all on *.* to oldguo@'localhost' identified by '123';
[root@db01 data_3306]# mysql -uoldguo -p -S /tmp/mysql.sock 
Enter password: 

需要提前创建好localhost用户

(3)如何验证一个用户是通过本地还是远程和登录的.

show processlist;

(4) 免交互执行命令

[root@db01 ~]# mysql -uroot -p -e "show processlist"

(5) 导入SQL脚本
在linux上执行
mysql -uroot -p123456 < t100w.sql
进入MySQL执行
source /root/world.sql

2.自带客户端工具 mysqladmin

(1) 修改密码
mysqladmin -uroot -p123456 password 123

(2) 关闭数据库
mysqladmin -uroot -p123 shutdown

3.第三方开发工具
sqlyog 
navicat
workbench
4.应用程序连接
php-mysql 
pip3 install mysql 
jar 
go 

4.MySQL的启动关闭

systemctl start mysqld
mysql.server start 
mysqld_safe
mysqld

5. MySQL的初始化配置

1.初始化配置方法

源码安装定制 < 初始化配置文件 < 命令行启动时定制

2.初始化配置文件

mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

建议一个mysql实例一个配置文件

3.配置文件书写格式
[root@db01 data_3306]# cat /etc/my.cnf 
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3306
server_id=6
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

标签项 ====> [mysqld]
服务器端 [server]: [mysqld],[mysqld_safe] ====> 影响到MySQL启动
客户端 [clinet] : [mysql] ,[mysqldump] ====> 影响本地客户端程序

配置项 ====> key=value

4.自定制初识化配置文件位置

mysqld --defaults-file=/opt/a.cnf &

6.多实例的规划和配置

分布式架构中应用广泛
1.创建存放数据的目录,并授权
mkdir -p /data/mysql/{data_3307,data_3308,data_3309}
chown -R mysql.mysql /data
2.编写my.cnf配置文件

[root@db01 ~]# cat /data/mysql/my3307.cnf 
[mysqld]
user=mysql
port=3307-------------------------------------------分布式修改不同端口
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3307-----------------------分布式修改不同数据存放目录
server_id=7-----------------------------------------分布式id不能相同
socket=/tmp/mysql3307.sock--------------------------分布式生成不同的socket文件

3.初始化数据

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3307
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3308
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3309

4.启动多实例

mysqld --defaults-file=/data/mysql/my3307.cnf &
mysqld --defaults-file=/data/mysql/my3308.cnf &
mysqld --defaults-file=/data/mysql/my3309.cnf &

5.使用systemctl管理多实例

cat >/etc/systemd/system/mysqld3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/mysql/my3307.cnf  -**-
LimitNOFILE = 5000
EOF

使用systemctl启动

systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
上一篇 下一篇

猜你喜欢

热点阅读