Centos7源碼安裝MySQL5.7


a.連接數據庫報111

從一台linux遠程連接另一台linux上的MySQL,出現ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xx'(111)錯誤.

1.skip_networking:這個參數讓MySQL只能通過本機Socket連接(socket連接也是本地連接的默認方式);

2.可能使用了bind_address=127.0.0.1;通過查看my.cnf,以上兩個都是沒設置的,排除掉這兩種情況;

3.排查DNS解析問題,檢查是否設置了:skip_name_resolve,這個參數加上后,不支持主機名的連接方式;

4.排查用戶和密碼問題,其實用戶和密碼的錯誤,不會出現111的,所以排除用戶密碼問題,密碼錯誤報這個錯;

ERROR 1045 (28000): Access denied for user 'root'@'XXXX' (using password: YES)

5.排查端口問題,有可能MySQL port不是默認的3306,連接時沒有指定--port,最終得出監聽端口是11306.

b.mysql5.7初始化

A.安裝

yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
tar xf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

cd /usr/local/
mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql
mkdir -p /data/mysql/tmp
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql/
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

初始化數據庫,會生成一個臨時密碼

B.啟動

配置my.cnf

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/data/mysql
#不區分大小寫
lower_case_table_names = 1
#不開啟sql嚴格模式
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
socket=/data/mysql/tmp/mysql.sock
log-error=/data/mysql/tmp/mysqld.log
pid-file=/data/mysql/tmp/mysqld.pid

[mysqld_safe]
log-error=/data/mysql/tmp/mysqld_safe.log
pid-file=/data/mysql/tmp/mysqld_safe.pid

# 添加開機啟動
cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
# 修改啟動腳本
vim /etc/init.d/mysqld
# 在46行添加路徑
basedir=/usr/local/mysql
datadir=/data/mysql

C.解決問題

啟動報錯,這個問題在之前的博客中已經講過

創建文件並授予mysql權限

touch /data/mysql/tmp/mysqld_safe.log
chown -R mysql:mysql /data/mysql/
echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
source /etc/profile

啟動成功后,可以發現,pid文件是[mysqld]中定義的,log-error文件用的是[mysqld_safe]中定義的.

連接數據庫,找不到socket,解決辦法:

1.創建軟鏈

2.直接指定socket

修改root密碼並授權一個新用戶

兩個用戶以不同的方式均可登錄

c.mysql5.7忘記root密碼,如何修改去密碼

# 關閉正在運行的 MySQL 
service mysql stop
# 運行
mysqld_safe --skip-grant-tables &
# 為了安全可以這樣禁止遠程連接
mysqld_safe --skip-grant-tables --skip-networking &
# 使用mysql連接server
mysql -p
# 更改密碼
update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
# 新版的mysql數據庫下的user表中已經沒有Password字段了,而是將加密后的用戶密碼存儲於authentication_string字段
flush privileges;
quit;
# 也可以使用alter user:
alter user 'root'@'localhost' identified by '123';
# 也可以這樣
set password for 'root'@'localhost'=password('123');

d.mysql5.7自動初始化root密碼

# 確保mysql是啟動的
defaultmysqlpwd=`grep 'A temporary password' /var/log/mysqld.log | awk -F "root@localhost: " '{ print $2}'`
/usr/bin/mysql -uroot -p"${defaultmysqlpwd}" --connect-expired-password <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456Aa?';
EOF

 

搭建參考這篇:https://blog.csdn.net/z13615480737/article/details/80019881

連接報111:https://www.cnblogs.com/ximalaya/p/6711792.html

忘記root密碼:https://www.cnblogs.com/xiaotengyi/p/5458731.html

自動初始化root密碼:https://www.cnblogs.com/fb010001/p/9134742.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM