第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.注意
使用跳过授权表之后,所有的本地和远程用户都不需要用户名密码认证即可连接,非常危险.