一键三联,把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