1.用户管理
1.1用户的作用:
登录、管理
1.2含义:
用户名@‘白名单’
1.2.1 用户名:
规范:不要太长、要和业务有关
1.2.2 白名单
网络范围
user@'10.0.0.56'
user@'%'
user@'10.0.0.%' 255.255.255.0 24位
user@'10.0.0.0/255.255.254.0' 23位
user@'10.0.0.5%' 50-59
user@'localhost' 本地
常用
user@'10.0.0.%'
user@'10.0.0.0/255.255.254.0'
user@'10.0.0.5%' 50-59
user@'localhost' 本地
1.2.3 用户管理
创建用户: create user +用户名,网络范围 密码
mysql> create user zhao@'10.0.0.%' identified by '123';
查询用户
mysql> select user,host from mysql.user;
修改用户密码:
mysql> alter user zhao@'localhost' identified by '123';
删除用户:
mysql> drop user zhao@'10.0.0.%';
说明:
8.0+ 版本: 必须先创建用户再授权.
8.0以前: 可以grant 授权时自动创建用户。
2.权限管理
2.1查看可以设定的所有权限列表
mysql> show privileges;
2.2 授权和回收权限
GRANT 权限 ON 权限作用范围 TO 用户 IDENTIFIED BY '123' with grant option;
权限作用范围:
*.* ====> 一般是管理员会设置的方法
oldguo.* ====> 一般是业务用户会设置的方法
oldguo.t1 ====> 一般是业务用户户设置的方法
2.3企业授权案例
- 授权一个管理员用户oldguo,可以以从10网段任意地址登录管理数据库
mysql> GRANT all ON *.* TO oldguo@'10.0.0.%' IDENTIFIED BY '123' with grant option;
关闭验证连接模块,直接无密码登录。关闭tcp连接
- 授权一个业务用户 www ,可以从10网段地址访问app库的所有表
mysql> grant select,update,insert,delete ON app.* TO app@'10.0.0.%' IDENTIFIED BY '123' ;
2.4 root管理员密码忘记或被篡改如何处理?
(1) 关闭数据库,启动到"单用户"模式
[root@db01 data_3306]# systemctl stop mysqld
[root@db01 data_3306]# mysqld_safe --skip-grant-tables --skip-networking &
跳过grant-tables验证模块,和TCP连接。无密码登录。
(2) 无密码登录MySQL
[root@db01 data_3306]# mysql
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '123456';
(3) 重启数据库到正常模式
[root@db01 data_3306]# systemctl restart mysqld
2.5 查询用户权限
mysql> show grants for app@'10.0.0.%';
2.6 回收权限
mysql> revoke delete,drop on app.* from 'app'@'10.0.0.%';
3. MYSQL 的连接管理
3.1 自带客户端工具
3.1.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连接方式
注:需要提前创建好localhost用户
mysql> grant all on *.* to oldguo@'localhost' identified by '123';
[root@db01 data_3306]# mysql -uoldguo -p -S /tmp/mysql.sock
Enter password:
mysql> show processlist; #查看用户是远程或本地登录
(3) 免交互执行命令操作数据库 -e
[root@db01 ~]# mysql -uroot -p -e "show processlist"
(4) 导入SQL脚本
两种方式
[root@db01 ~]# mysql -uroot -p < t100w.sql
Enter password:
mysql> source /root/world.sql
3.1.2 mysqladmin
mysqladmin是一个执行管理操作的客户端程序。它可以用来检查服务器的配置和当前状态、创建和删除数据库等。
(1) 修改密码
[root@db01 ~]# mysqladmin -uroot -p123456 password 123
[root@db01 ~]# mysql -uroot -p123
(2) 关闭数据库
[root@db01 ~]# mysqladmin -uroot -p123 shutdown
mysqldump(备份恢复)
3.2第三方开发工具
sqlyog
navicat
workbench
3.3 应用程序连接
php-mysql
pip3 install mysql
jar
go
4. MySQL的启动关闭
systemctl ---> mysql.server start -----> mysqld_safe ----> mysqld
5.MySQL的初始化配置
5.1 初始化配置方法
源码安装定制 < 初始化配置文件 < 命令行启动时定制
5.2 初始化配置文件
一个MySQL实例一个配置文件,避免影响服务运行。
[root@db01 data_3306]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
5.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
5.4 自定制初识化配置文件位置
mysqld --defaults-file=/opt/a.cnf &、
6. 多实例的规划和配置,一台服务器运行4个MySQL服务
端口分别为 3307、3308、3309
分布式架构中应用广泛
1). 准备端口和目录
[root@db01 ~]# rm -rf /data/mysql/data_{3307,3308,3309}
[root@db01 ~]# mkdir -p /data/mysql/data_{3307,3308,3309}
- 配置文件准备
cat > /data/mysql/my3307.cnf <<EOF
[mysqld]
user=mysql
port=3307
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3307
server_id=7
socket=/tmp/mysql3307.sock
EOF
cat > /data/mysql/my3308.cnf <<EOF
[mysqld]
user=mysql
port=3308
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3308
server_id=8
socket=/tmp/mysql3308.sock
EOF
cat > /data/mysql/my3309.cnf <<EOF
[mysqld]
user=mysql
port=3309
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3309
server_id=9
socket=/tmp/mysql3309.sock
EOF
3). 授权
[root@db01 ~]# chown -R mysql.mysql /data/
4). 初始化数据
[root@db01 ~]# 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
5). 启动多实例
[root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3307.cnf &
[root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3308.cnf &
[root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3309.cnf &
[root@db01 mysql]# netstat -tulnp
6). 使用 systemd 管理多实例
3307端口
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
3308端口
cat >/etc/systemd/system/mysqld3308.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/my3308.cnf
LimitNOFILE = 5000
EOF
3309端口
cat >/etc/systemd/system/mysqld3309.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/my3309.cnf
LimitNOFILE = 5000
EOF
以上操作完成,即可启动服务。
[root@db01 ~]# pkill mysqld
[root@db01 ~]# systemctl restart mysqld
[root@db01 ~]# systemctl start mysqld3307
[root@db01 ~]# systemctl start mysqld3308
[root@db01 ~]# systemctl start mysqld3309
查看端口
网友评论