最近預研一個新項目,需要裝一個mysql,因為以前裝過,原本以為很簡單,大概半小時搞定,但是沒想到搞了一晚上,記錄一下完整步驟和遇到的問題。
1、軟件版本和安裝包准備
- centos7
- mysql5.7
官網下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
- 版本選擇如下:
- 安裝包選擇如下:
2、首先卸載系統中自帶的mysql並刪除配置文件
# 查看系統自帶的Mariadb和msql
rpm -qa|grep mariadb
rpm -qa | grep mysql
# 卸載系統自帶的Mariadb
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
# 刪除etc目錄下的my.cnf
rm /etc/my.cnf
3、創建mysql用戶和用戶組
# 創建mysql用戶組
groupadd mysql
# 創建一個用戶名為mysql的用戶,並加入mysql用戶組
useradd -g mysql mysql
4、安裝准備
這里我們安裝在/usr/local下面
cd /usr/local/
上傳
rz 安裝包
解壓
tar -zxvf 安裝包名
mv 安裝包名 mysql
修改權限並創建data目錄
chown -R mysql mysql/
chgrp -R mysql mysql/
cd mysql/
mkdir data
chown -R mysql:mysql data
5、准備配置文件
cd /usr/local/mysql
vi my.cnf
[mysql]
socket=/var/lib/mysql/mysql.sock
# set mysql client default chararter
default-character-set=utf8
[mysqld]
socket=/var/lib/mysql/mysql.sock
# set mysql server port
port = 3306
# set mysql install base dir
basedir=/usr/local/mysql
# set the data store dir
datadir=/usr/local/mysql/data
# set the number of allow max connnection
max_connections=200
# set server charactre default encoding
character-set-server=utf8
# the storage engine
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
# 取消密碼驗證
skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# skip-grant-tables
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql.server]
user=mysql
basedir=/usr/local/mysql
6、進入mysql文件夾,並安裝mysql
cd /usr/local/mysql
這里注意不要使用mysql_install_db的初始化方法
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize
如果報以下錯誤:
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or director
則執行:
yum -y install numactl
然后在執行:
usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize
7、開啟服務
# 將mysql加入服務
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 開機自啟
chkconfig mysql on
# 開啟
service mysql start
8、設置密碼
# 登錄(由於/etc/my.cnf中設置了取消密碼驗證,所以此處密碼任意)
/usr/local/mysql/bin/mysql -u root -p
# 操作mysql數據庫
use mysql;
# 修改密碼
update user set authentication_string=password('你的密碼') where user='root';
flush privileges;
exit;
重設密碼
將my.cnf中的skip-grant-tables刪除;
/usr/local/mysql/bin/mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '修改后的密碼';
exit;
允許遠程連接
/usr/local/mysql/bin/mysql -u root -p
use mysql;
update user set host='%' where user = 'root';
flush privileges;
eixt;
最后添加快捷方式
ln -s /usr/local/mysql/bin/mysql /usr/bin