MySQL零散知识点整理

2022-01-25 19:13:43

mysqladmin 的使用

1、修改密码,以修改密码为 12345 为例:

$ mysqladmin -uroot -p password 12345
Enter password: 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

2、关闭数据库:

$ mysqladmin -uroot -p shutdown

3、查看数据库状态:

$ mysqladmin -uroot -p status
Enter password: 
Uptime: 3  Threads: 1  Questions: 2  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries per second avg: 0.666

忘记密码解决

MySQL 忘记密码的解决其实和 Linux 系统相同,就是进入单用户模式下嘛~~

这里 mysqld 有如下选项提供类似单用户模式的支持:

所以下面我们就可以通过 mysqld 的这两个选项来启动 MySQL 进程为单用户模式:

$ mysqld --skip-networking --skip-grant-tables &

mysqld_safe 其实就是对 mysqld 的再度调用封装,所以这里也可以使用 mysqld_safe 启动:

$ mysqld_safe --skip-networking --skip-grant-tables &

接下来就可以直接通过 mysql 客户端登入 MySQL,无需输入密码:

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

localhost [(none)]> 

systemd 管理 MySQL

编写如下 systemd unit 文件:

$ cat > /etc/systemd/system/mysqld2.service <<EOF
[Unit]
# 描述
Description=MySQL Server
# man 文档路径
Documentation=man:mysqld(8)
# man 文档在线地址
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
# 自启动时在 network 和 syslog 之后执行
After=network.target
After=syslog.target
[Install]
# 用于多用户级别
WantedBy=multi-user.target
[Service]
# 用户
User=mysql
# 组
Group=mysql
# 启动执行命令
ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/opt/my.cnf
# 文件描述符限制
LimitNOFILE = 5000
EOF

使用 systemd 启动服务:

$ systemctl start mysqld2

字符集配置

可通过 SQL 语句临时修改:

-- 查看支持的字符集,常用 utf8、utf8mb4。
show charset;
-- 查看支持的排序规则,常用 utf8_general_ci、utf8_bin。
show collation;
-- 查看字符集
show variables like '%chara%';
-- 设置客户端字符集
set names utf8mb4;
-- 设置服务端字符集
set character_set_server=utf8mb4; 
set character_set_database=utf8mb4;

永久修改需要在 my.cnf[mysqld] 下添加如下配置:

character_set_server=utf8mb4
init_connect="SET NAMES 'utf8mb4'"