由于yum install不能直接找到mysql的源,因此只能先wget镜像。
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
在进行这一步之前先执行rpm -qa | grep mysql,确保没有mysql相关的rpm文件,否则可能会导致失败,我删除了以下和mysql相关的文件:
rpm -e --nodeps mysql-community-client--5.6.48-2.el7.x86_64
rpm -e --nodeps mysql-community-client-5.6.48-2.el7.x86_64
rpm -e --nodeps mysql-community-release-5.6.48-2.el7.x86_64
rpm -e --nodeps mysql-community-libs-5.6.48-2.el7.x86_64
rpm -e --nodeps mysql-community-common-5.6.48-2.el7.x86_64
rpm -e --nodeps mysql-community-server-5.6.48-2.el7.x86_64
rpm -e --nodeps mysql-community-release-el7-5.noarch
然后查看包含的版本。可以看到有8.0和5.7两个版本。这里我选择5.7版本。
yum repolist enabled | grep "mysql.*-community.*"
因此禁用8.0版本,启用5.7版本。
shell> sudo yum-config-manager --disable mysql80-community
shell> sudo yum-config-manager --enable mysql57-community
报错:
Failed to start mysql.service: Unit mysql.service is masked
显示被标记,执行以下命令解除标记。
systemctl unmask mysql.service
systemctl start mysql.service
报错:
Failed to start mysql.service: Unit mysql.service is not found
在/etc/my.cnf中修改:
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/data/mysql.sock
重启服务:
systemctl daemon-reload
sudo systemctl start mysqld.service
报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
/etc/my.cnf添加:
[client]
socket=/var/lib/mysql/data/mysql.sock
重启服务:
sudo systemctl restart mysqld.service
sudo systemctl status mysqld.service
显示状态如下:
[root@GPUNode run]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2020-06-18 04:47:08 EDT; 7s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 86077 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 86053 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 86079 (mysqld)
Tasks: 27
CGroup: /system.slice/mysqld.service
└─86079 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
Jun 18 04:47:06 GPUNode systemd[1]: Starting MySQL Server...
Jun 18 04:47:08 GPUNode systemd[1]: Started MySQL Server.
表示成功。
然后执行以下指令进入mysql -uroot -p。报错
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
可能我忘记密码了。需要执行下面命令修改密码:
sudo systemctl stop mysqld.service #关闭服务
mysqld --user=root --skip-grant-tables &
mysql #无密码进入mysql
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('111111') where USER='root'; #修改密码
mysql> flush privileges; #刷新权限
mysql> exit
然后在执行:mysql -uroot -p
Enter password:******
在重启服务的时候,显示状态为activating,查看log发现报错:
[ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
[Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
查看后台进程是否包含mysql,导致进程占用:
ps -aux | grep "mysql"
kill掉mysql相关的进程号即可,重启成功。
在使用mysql时候会报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
表示之前设置的密码失效了,首先在/etc/my.cnf中设置:
#设置用户密码永不过期
default_password_lifetime=0
重启服务,然后在mysql -uroot -p进入mysql命令行中:
set global validate_password_policy=0;
set global validate_password_length=2;
alter user 'root'@'localhost' identified by '123456';
flush privileges;