linux下MySql的安装与配置

发布于:2025-05-08 ⋅ 阅读:(13) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到