centos7 安裝mysql和相關報錯

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章