启动服务
sudo systemctl start mysqld.service
sudo systemctl restart mysqld.service
查看启动日志
sudo systemctl status mysqld.service -l
查看mysql配置
cat /etc/my.cnf
查看安装包版本
rpm -qa | grep mysql
重置密码:
# 1.修改配置
vim /etc/my.cnf
# 2.进入编辑状态,在配置文件的最后加入
skip-grant-tables
# 3.保存退出
# 4.重启mysql服务
systemctl restart mysqld.service
# 5.登陆mysql命令行, 密码输入部分直接回车不用管他
mysql -uroot -p
# 6.清空root用户的密码
use mysql;
select host, user, authentication_string, plugin from user;
update user set authentication_string='' where user='root';
#7.退出mysql命令行,删除前面在my.cnf中添加的配置,然后重启mysql服务(步骤跟前面一样,不写)
#8.进入mysql命令行然后修改root密码即可
ALTER user 'root'@'%' IDENTIFIED BY 'root123##ROOT';
新建用户
CREATE USER 'root'@'%' IDENTIFIED BY 'NewPassword@123';
如果提示密码过于简单则执行
set global validate_password.policy=0;
set global validate_password.length=1;
修改加密方式
mysql8.0默认的加密方式是“caching_sha2_password”,而navicat只支持以前的"mysql_native_password",所以接下来修改密码加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'NewPassword@123';
设置用户权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
刷新权限
flush privileges;
Upgrade after a crash is not supported. The redo log was created with Maria的解决办法
建立备份目录,将两个日志文件备份
文件路径可通过/etc/my.cnf配置文件中的datadir得到
mkdir backup
cp /var/lib/mysql/ib_logfile0 /backup
cp /var/lib/mysql/ib_logfile1 /backup
然后删除备份前的这两个文件,
rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile0
重启服务
sudo systemctl restart mysqld.service
docker在centos下安装mysql
1. 拉取镜像
docker pull mysql:latest
2.查看已安装镜像
docker images
3.运行镜像
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
参数说明:
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称
--restart=always:总是跟随docker启动
--privileged=true:获取宿主机root权限
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
-d mysql:latest:后台运行mysql容器,版本是latest。
4. 查看正在运行的容器
docker ps
果显示的是up状态,那就是启动成功了。如果是restarting,说明是有问题的
5. 查看日志
docker logs -f mysql
如果出现错误 Failed to access directory for --secure-file-priv. Please make sure that dir
6. 创建mysql配置文件:my.cnf
cd /usr/local/mysql
ll
cd conf
vi my.cnf
文件内容:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 设置东八区时区
default-time_zone = '+8:00'
# 设置密码验证规则,default_authentication_plugin参数已被废弃
# 改为authentication_policy
#default_authentication_plugin=mysql_native_password
authentication_policy=mysql_native_password
# 限制导入和导出的数据目录
# 为空,不限制导入到处的数据目录;
# 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录;
# 为NULL,禁止导入与导出功能
#secure_file_priv=/var/lib/mysql
secure_file_priv=
init_connect='SET collation_connection = utf8mb4_0900_ai_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
skip-character-set-client-handshake
skip-name-resolve
7. 查看容器内部
docker exec -it mysql /bin/bash
然后可以 mysql 进入进行创建账户,赋予权限操作
8. 重启mysql服务,使其配置生效
docker restart mysql
9. 设置docker启动时启动mysql
docker update mysql --restart=always
设置root账户
进入mysql后
user mysql
select host, user, plugin, authentication_string, password_expired from user;
update user set host='%' where user='root';
update user set plugin='mysql_native_password' where user='root';
ALTER user 'root'@'%' IDENTIFIED BY 'root';