一鍵三聯,把mysql的安裝與配置也寫了,供各位參考。
--------------------------------------MySql的安裝與配置--------------------------------------
1 將下載的 壓縮包解壓到指定目錄
tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
卸載可能的相關組件,搜一下mariadb相關軟件,通通卸載(個人覺得不好使)。
rpm -e --nodeps mariadb-libs
安裝需要的庫
yum install libaio-devel -y
進入:cd /usr/local
建立文件夾 mysql
進行軟連接
ln -s /home/tools/mysql-5.7.26-linux-glibc2.12-x86_64/ mysql
添加mysql組:
sudo groupadd mysql
# 創建不可登錄的mysql用戶設置權限
useradd -s /sbin/nologin -M mysql ?
設置文件夾權限:
chown -R mysql:mysql /usr/local/mysql*
chown -R mysql:mysql?/home/data
chmod -R 755 /home/data
初始化mysql的庫,放在/home/data下:
?/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/data
變為全局命令:
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bashrc ?# 持久化配置
source ~/.bashrc ?# 立即生效
-------------------------------------------my.cnf 的設置--------------------------------------------------------------
創建my.cnf 放到/etc下
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=/usr/local/mysql/
datadir=/home/data/
character-set-server=utf8
default-storage-engine=MyIsam
max_connections=100
collation-server=utf8_unicode_ci
init_connect='SET NAMES utf8'
innodb_buffer_pool_size=64M
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=120
innodb_log_buffer_size=4M
innodb_log_file_size=256M
interactive_timeout=120
join_buffer_size=2M
key_buffer_size=32M
log_error_verbosity=1
max_allowed_packet=16M
max_heap_table_size=64M
myisam_max_sort_file_size=64G
myisam_sort_buffer_size=32M
read_buffer_size=512kb
read_rnd_buffer_size=4M
server_id=1
skip-external-locking=on
sort_buffer_size=256kb
table_open_cache=256
thread_cache_size=16
tmp_table_size=64M
wait_timeout=120
#默認的位置是/tmp/mysql.sock,其實更需要用默認的,因為一個數據庫往往會有兩三個以上的程序調用,特別是那種帶后臺的,往往和主服務器程序不是一個進程,甚至不是一個開發語言,為了減少不必要的特別設置的麻煩,就用默認路徑;這個看各位服務器人員的偏好了。
#強調一點:必須保持和下面client的設置一致。而且如果做開機自動啟動的話,也要保持一致!必須,必須,必須!
socket=/home/data/mysql.sock?
bind-address=0.0.0.0
#打開這個就是跳過密碼,一般不這么用
#skip-grant-tables??
[client]
port=3306
default-character-set=utf8
socket=/home/data/mysql.sock
------------------------------------Mysqld.service 的配置--------------------------------------------------------
Mysqld.service 的配置:
放在/etc/systemd/system下
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld ?--basedir=/usr/local/mysql ?--datadir=/home/data --pid-file=/home/data/mysql.pid ?--socket=/home/data/mysql.sock??--port=3306
Restart=on-failure
[Install]
WantedBy=multi-user.target
重載配置:
sudo systemctl daemon-reload
設置開機啟動
systemctl enable mysqld.service
啟動服務
systemctl restart mysqld
查看狀態:
?systemctl status mysqld
確保mysql運行正常:
--------------------------------進入Mysql進行初始設置------------------------------------------------------
mysql -u root -p
?輸入臨時密碼:
進入Mysql:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';??
FLUSH PRIVILEGES; ?-- 刷新權限查看數據庫是否其他地址可訪問:
使用新密碼 重新登錄mysql
[root@localhost local]# mysql -u root -p
Enter password: Welcome to the MySQL monitor.
?Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.26
MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SELECT Host, User FROM mysql.user WHERE User='root';
+-----------+------+
| Host | User |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)
添加所有用戶可外部訪問,需要防火墻配合設置;允許某個地址ID進行訪問
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
?mysql> SELECT Host, User FROM mysql.user WHERE User='root';
?+-----------+------+
| Host | User |
+-----------+------+
| % | root |
| localhost | root |
+-----------+------+
2 rows in set (0.00 sec)
?mysql> FLUSH PRIVILEGES;?刷新生效
Query OK, 0 rows affected (0.00 sec)
添加本地IP可以訪問數據庫
?mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>?SELECT Host, User FROM mysql.user WHERE User='root';
?+-----------+------+
| Host | User |
+-----------+------+
| % | root |
| 127.0.0.1 | root |
| localhost | root |
+-----------+------+
3 rows in set (0.00 sec) mysql>
查看所有庫
SHOW ?DATABASES;
為正確的樣子
------------------------------------------------------其他-----------------------------------------------------------
手動配置開機啟動mysql
使用/etc/rc.local文件(所有Linux版本)
編輯/etc/rc.local文件:
vim /etc/rc.local
在文件末尾添加啟動MySQL的命令:
sudo /etc/init.d/mysql start
確保/etc/rc.local文件有執行權限:
chmod 755?/etc/rc.local
加入開機啟動
echo 'export PATH=/usr/local/mysql/bin:$PATH'> /etc/profile.d/mysql.sh
-------------------------------------------打開外部防火墻訪問權限---------------------------------------------------
netstat -antp | grep 3306
firewall-cmd --list-ports | grep 3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
防火墻的處理:
/etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33(接口名稱需與實際一致)
ONBOOT=yes(確保開機自動啟動)
BOOTPROTO=dhcp(動態IP)或?BOOTPROTO=static(靜態IP)
ip link show ens33
ip link set ens33 up
# 關閉防火墻 systemctl stop firewalld
?# 臨時禁用 SELinux setenforce 0
# 使用 nmcli 啟用接口 nmcli connection up ens33
cd /etc/sysconfig/network-scripts/ rm -f ifcfg-eth* ifcfg-ens*.bak # 保留 ifcfg-ens33
systemctl restart network
systemctl stop NetworkManager
systemctl disable NetworkManager