03MySQL基础管理

03MySQL基础管理

Deng YongJie's blog 138 2022-01-17

第1章 启动与关闭MySQL

1.启动方式

常规启动:

service mysqld start
systemctl start mysqld
/etc/init.d/mysqld start

前台启动:

如果作为调试可以直接使用命令启动,这是会作为前台启动将日志都打印到屏幕上

mysqld
mysqld_safe

2.mysqld_safe和mysqld区别

mysqld_safe作用:

1.官方提供的启动脚本最终会调用mysqld_safe命令脚本,然后mysqld_safe脚本又会调用mysqld主程序启动MySQL服务。
2.最终都是由mysqld启动,mysqld_safe可以看做是mysqld的守护进程。
3.mysqld_safe会启动并监视mysqld,如果mysqld发生意外错误可以重启服务。
4.mysqld_safe启动可以将mysqld的错误消息发送到数据目录中的host_name.err文件
5.可以读取的配置部分[mysqld],[server],[myslqd_safe], 为了兼容mysql_safe也会读取[safe_mysqld]中的配置
6.调用的mysqld是可以在[mysqld_safe]中用-mysqld, --mysqld-version指定

mysqld作用:

1.mysqld是mysql的核心程序,用于管理mysql的数据库文件以及用户的请求操作。
2.mysqld可以读取配置文件中的[mysqld]的部分

3.调试方式

调试命令:

mysqld
mysqld_safe

应用场景:

1.调试数据库启动故障。
2.临时的启动参数应用。

4.关闭方式

常规关闭:

systemctl stop mysqld
service mysqld stop
/etc/init.d/mysqld stop

命令关闭:

mysql -uroot -p123456
mysql> shutdown;
mysql -uroot -p123456 -e 'shutdown;'

不建议关闭方法:

kill PID
pkill mysqld
killall mysqld

强烈不建议:

 kill -9 PID

第2章 配置管理

1.配置方法

配置文件 :主要方法
命令行参数 :特殊场景
源码编译安装:应用不多

2.配置优先级

命令行 > 配置文件 > 编译
例如: port
配置文件: port=3306 2
命令行: port=3307 1
源码编译: port=3308 3

3.配置文件位置

[root@db-51 ~]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf

实验:4个配置文件都添加port,而且参数不一样,以哪个配置为准?

会以最后一个配置为准

4.手动指定配置文件

手工设定默认配置文件

--defaults-file=/opt/my.cnf

启动命令

[root@db01 ~]# mysqld_safe --defaults-file=/opt/my.cnf &
[root@db01 ~]# mysqld --defaults-file=/opt/my.cnf &

5.编写自定义启动脚本

cat > /etc/systemd/system/mysqldd.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=/opt/mysql/bin/mysqld --defaults-file=/opt/my.cnf
LimitNOFILE = 5000
EOF

6.配置文件格式

[mysqld] # 服务端标签
user=mysql # MySQL内置管理用户
basedir=/data/app/mysql # 软件目录
datadir=/data/3306/data # 数据目录
socket=/tmp/mysql.sock # socket文件生成目录
port=3306 # 端口号
server_id # 主机编号(主从使用)
[mysql]
socket=/tmp/mysql.sock # mysql 连接数据库自动读取的socket位置

[标签项]
服务端标签:
[server] 所有服务端的程序
[mysqld] mysqld 程序运行时读取的配置
[mysqld_safe] mysqld_safe 程序运行时读取的配置
客户端标签:
[clinet] 所有本地客户端的程序
[mysql] mysql命令在本地执行时读取的配置
[mysqldump] mysqldump

第3章 连接管理

1.本地连接

前提条件

grant all on *.* to test@'localhost' identified by '123';

本地账号密码登陆

mysql -utest -p123

本地使用socket登陆

mysql -utest -p123 -S /tmp/mysql.sock

2.远程连接

前提条件

grant all on *.* to test1@'10.0.0.%' identified by '123';

远程连接

mysql -utest1 -p123 -h 10.0.0.51 -P3306

3.免交互执行命令

 mysql -uroot -p123 -e "select user,host from mysql.user;"

4.导入数据

mysql -uroot -p123 < world.sql

5.图形连接

sqlyog
navicat
workbench

第3章 用户管理

1.用户说明

Linux用户:
登录Linux系统
管理Linux对象: 文件
MySQL用户:
登录MySQL数据库
管理MySQL对象: 表

2.用户的定义

Linux用户: 用户名
MySQL用户: 用户名@'白名单'
地址列表,允许白名单的IP登录MySQL,管理MySQL。
oldjie@'localhost' : oldjie用户能够通过本地登录MySQL(socket)
oldjie@'10.0.0.10' : oldjie用户能够通过10.0.0.10远程登录MySQL服务器
oldjie@'10.0.0.%' :oldjie用户能够通过10.0.0.xx/24远程登录MySQL服务器
oldjie@'10.0.0.5%' :...50-59...
oldjie@'10.0.0.0/255.255.254.0'
oldjie@'%'
oldjie@'db01'
oldjie@'db01.oldjie.com'

3.用户管理

查找用户

select user,host,authentication_string from mysql.user;

增加用户

create user oldjie@'localhost';
select user,host from mysql.user;
create user rancher@'172.18.%.%' identified by 'MzQ1MzQ1MzQK';
select user,host ,authentication_string from mysql.user;

root修改用户

alter user oldjie@'localhost' identified by '123';

普通账户修改密码

set password=password('123456');

删除用户

drop user oldjie@'localhost';

第4章 权限管理

1.权限的作用

用户对数据库对象,有哪些管理能力

2.查看权限列表

show privileges;

3.授权操作

查看帮助:

help grant

格式说明:

GRANT ALL PRIVILEGES ON *.* TO 'rancher'@'172.18.%.%' IDENTIFIED BY 'MzQ1MzQ1MzQK';
授权          权限    ON 权限范围 TO    允许用户登陆的主机 创建密码

授权举例:创建远程管理员权限

GRANT ALL PRIVILEGES ON *,* TO 'root'@'10.0.0.%' IDENTIFIED BY '123456';

授权举例:授权一个普通用户 test@‘10.0.0.%’ ,权限为 select 、update、delete、insert,范围:test.*

grant select,update,delete,insert on test.* to test@'10.0.0.%' identified by '123';
show grants for test@'10.0.0.%';

4.回收权限

注意: MySQL中不能重复授权。是相加关系。

revoke delete on test.* from 'test'@'10.0.0.%' ;
show grants for test@'10.0.0.%';

5.删除用户

DROP USER '用户'@'主机';

第5章 设置和修改密码

1.设置root密码

mysqladmin -uroot password '123456'
mysqladmin -uroot password '123456' -S /tmp/mysql_3306.sock

2.修改root密码

方法1: 使用mysqladmin修改

mysqladmin -uroot -p123456 password '123'
mysqladmin -uroot -p123456 password '123' -S /tmp/mysql_3306.sock

方法2: 使用SQL语句修改指定用户

set password for root@localhost =PASSWORD('123');
flush privileges;

方法3:使用SQL语句修改指定用户 5.7的方法

UPDATE mysql.user SET authentication_string=PASSWORD("123456") WHERE
user='root' and host='localhost';

方法4:使用SQL语句修改当前用户密码

set password=password('123456');
flush privileges;

第6章 找回root密码

1.停止MySQL服务

systemctl stop mysql

2.忽略授权登陆验证

mysqld_safe --skip-grant-tables --user=mysql

3.免密登陆MySQL

mysql

4.修改MySQL密码

UPDATE mysql.user SET authentication_string=PASSWORD("123456") WHERE
user='root' and host='localhost';

5.重启MySQL

systemctl restart mysqld

6.使用修改后的密码登陆

mysql -uroot -p123456

7.注意

使用跳过授权表之后,所有的本地和远程用户都不需要用户名密码认证即可连接,非常危险.