1 启动、关闭 MySQL
1.1 单实例MySQL启动
--- 数据库脚本启动MySQL
cp /app/mysql5.7/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
--- 初始化数据库方法启动MySQL
mysqld_safe --user=mysql > /dev/null 2>&1 &
--- 查看MySQL服务端口
ss -lnt | grep 330
--- 查看MySQL服务进程
ps -ef | grep mysql | grep -v grep
1.2 单实例MySQL停止
--- 脚本关闭数据库服务
/etc/init.d/mysqld stop
--- 管理命令关闭数据库服务
mysqladmin -uroot -proot123456 shutdown
--- 杀进程命令关闭数据库服务
kill $pid
killall mysqld
pkill mysqld
1.3 多实例MySQL启停
--- 启动3306实例
mysqld_safe --defaults-file=/multinst/3306/my.cnf 2>&1 > /dev/null &
--- 关闭3306实例
mysqladmin -uroot -proot123456 -S /multinst/3306/tmp/mysql.sock shutdown
注:多实例启动时需指定my.cnf,关闭时需指定socket文件。
2 MySQL链接方法
2.1 MySQL客户端
MySQL自带的客户端在/app/mysql5.7/bin下,常用管理命令mysql、mysqladmin、mysqldump、mysqlbinlog。
2.2 MySQL连接方式
--- TCP/IP方式
mysql -uroot -proot123456 -h node1
--- socket方式
mysql -uroot -proot123456 -S /app/mysql5.7/tmp/mysql.sock
2.3 MySQL登录
--- 单实例登录
mysql -uroot -p'root123456'
--- 多实例登录
mysql -uroot -p -S /multinst/3306/tmp/mysql.sock
mysql -uroot -p -S /multinst/3307/tmp/mysql.sock
--- 远程登录
---- 单实例
mysql -uroot -p -h node1
---- 多实例
mysql -uroot -p -h node1 -P3306
mysql -uroot -p -h node1 -P3307
2.4 MySQL链接提示符
登录MySQL后的提示符“mysql>”,日常环境中需要配置,区分生产环境和测试环境
--- session级别配置
mysql -uroot -p
prompt \u@node1 \r:\m:\s->
--- my.cnf配置
vi /etc/my.cnf
[client]
prompt = \\u@node1 \\r:\\m:\\s->
--- 多实例my.cnf配置
vi /multinst/3306/my.cnf
[client]
prompt = \\u@node1 \\r:\\m:\\s->
mysql --defaults-extra-file=/multinst/3306/my.cnf -S /multinst/3306/tmp/mysql.sock
3 MySQL数据库安全策略配置
3.1 安全策略
- 数据库服务器禁止开通公网访问权限
- root密码复杂度高
- 删除数据库中无用账户
- 删除默认数据库
- 业务用户,权限尽可能小
- 登录CLI操作不使用明文密码
--- 删除所有用户
delete from mysql.users;
--- 创建管理员
grant all privileges on *.* to system@'localhost' identified by 'root123' with grant option;
flush privileges;
3.2 root用户密码管理
3.2.1 配置root密码
--- 单实例
mysqladmin -u root password 'root123456'
--- 多实例
mysqladmin -u root password 'root123456' -S /multinst/3306/tmp/mysql.sock
3.2.2 修改root密码
linux命令方式
--- 单实例
mysqladmin -u root -p'root123456' password 'root123'
--- 多实例
mysqladmin -u root -p'root123' password 'root123456' -S /multinst/3306/tmp/mysql.sock
SQL语句方式
UPDATE mysql.user SET password=PASSWORD("root123") WHERE user='root' and host='localhost';
flush privileges;
3.2.3 root密码找回
单实例找回root密码
--- 停止mysql服务
/etc/init.d/mysqld stop
--- 启动mysql服务,附带“--skip-grant-tables”参数忽略授权表验证
mysqld_safe --skip-grant-tables --user=mysql >/dev/null 2>&1 &
--- 连接数据库
mysql
--- 配置新密码
UPDATE mysql.user SET password=PASSWORD("root123") WHERE user='root' and host='localhost';
FLUSH PRIVILEGES;
quit
--- 重启mysql服务
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
--- 使用新密码登录数据库
mysql -uroot -proot123
多实例找回root密码
--- 关闭3306实例数据库
killall mysqld
--- 启动mysql服务,附带“--skip-grant-tables”参数忽略授权表验证
mysqld_safe --defaults-file=/multinst/3306/my.cnf --skip-grant-tables --user=mysql >/dev/null 2>&1 &
--- 登录3306实例
mysql -S /multinst/3306/tmp/mysql.sock
--- 修改新密码
UPDATE mysql.user SET password=PASSWORD("root123") WHERE user='root' and host='localhost';
FLUSH PRIVILEGES;
quit
--- 重启3306实例
/multinst/3306/mysql stop
/multinst/3306/mysql start
--- 使用新密码登录3306实例
mysql -uroot -p'root123' -S /multinst/3306/tmp/mysql.sock
相关链接
参考 《MySQL 5.7 Reference Manual》、《MySQL Source-Configuration Options》