由於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;