内容纲要
给一台老的服务器安装MySQL,系统为centos6.5.由于6.5已经停止维护不能使用在线安装的方式实现,修改yum源也比较麻烦,所有采用手动下载安装包的方式。
1.获取mysql5.7的安装包并解压
# 获取压缩包
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
# 解压
tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
# 重命名
mv mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql
# 创建data目录
mkdir /usr/local/mysql/data
2.创建mysql用户和组
为了安全运行MySQL服务,建议为MySQL创建专用的用户和组:
# 添加用户组
groupadd mysql
# 添加用户
useradd -r -g mysql -s /bin/false mysql
# 授权
chown -R mysql:mysql /usr/local/mysql
- -useradd
:用于创建和管理用户帐户的命令
- -r
:创建一个系统用户
- -g mysql
:将用户添加到名为 mysql 的组中
- -s /bin/false
:将用户的登录shell设置为 /bin/false,这意味着用户不能直接登录到系统。
- mysql
:要创建的用户名
3. 初始化mysql
# 进入bin目录初始化
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
*注意:mysqld --initialize将生成一个临时的root密码,输出在终端上。请记下这个密码,以便首次登录。*
4. 配置mysql
创建MySQL的配置文件/etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysqld.sock
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8mb4
[client]
socket=/usr/local/mysql/mysqld.sock
- datadir
: 指定了MySQL数据库文件存储的位置。
- port
: 指定了MySQL服务器监听的端口,默认为3306。
- sql_mode
: 设置了MySQL的SQL模式,NO_ENGINE_SUBSTITUTION防止在指定的存储引擎不可用时使用默认引擎,STRICT_TRANS_TABLES在事务性表上强制应用严格的SQL模式。
- symbolic-links=0
: 禁用符号链接,提高安全性。
- max_connections
: 设置了MySQL服务器能接受的最大连接数。
- innodb_file_per_table
: 启用此选项使InnoDB为每个表创建独立的文件,有助于数据库管理和优化磁盘空间使用。
- lower_case_table_names=1
: 在Linux上,设置这个值为1使得表名存储为小写,这在跨平台使用数据库时很有用,但是要确保所有表名在SQL查询中使用的大小写与实际创建时的大小写一致。
- character_set_server=utf8mb4
: 设置服务器的默认字符集为utf8mb4,utf8mb4是推荐的字符集,因为它支持更广泛的Unicode字符,包括表情符号。
- socket
:设置服务器套接字文件
5. 启动mysql
#
/usr/local/mysql/support-files/mysql.server start
6. 继续配置软连接,加入环境变量
- 将mysql的命令加入系统环境
# 加入后可以在任意目录使用mysql 命令 # mysql 服务命令 用于启动停止mysql服务 ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql # mysql 连接服务,执行登陆、sql语句等 ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
- 修改mysql密码,可以使用
mysqld --initialize
输出的密码登陆也可以查找改密码# 查找密码 grep 'temporary password' /var/log/mysqld.log # 登陆 mysql -u root -p # 重启mysql服务跳过权限表 service mysql stop # 或者 systemctl stop mysql # 跳过权限表,可以任意身份登陆无需密码 mysqld_safe --skip-grant-tables & mysql -u root # 重置密码 FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; exit; # 如果是跳过权限表则需要重启mysql服务退出该模式 mysqladmin shutdown # 或者 service mysql start
使用新密码登陆即可。
7. 开启mysql 远程访问- 在MySQL命令行中,更新
root
用户(或其他您想要从远程访问的用户)的权限,允许从任意主机连接。使用如下命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '您的密码' WITH GRANT OPTION;
这里使用’%’允许从任何主机连接。为了更好的安全性,可以将’%’替换为特定的IP地址或主机名。
- 如果MySQL服务配置为仅监听本地接口,需要修改其配置文件(通常是my.cnf或mysqld.cnf),以便它监听可以从外部访问的网络接口。
通常文件位于/etc/my.cnf
,将bind-address
值改为0.0.0.0以监听所有可用网络接口,或者设置为服务器的具体公网IP。bind-address = 0.0.0.0
- 防火墙设置
确保服务器的防火墙设置允许外部访问MySQL的默认端口(3306)
对于ufw(在Ubuntu等系统中):ufw allow 3306
对于firewalld(在CentOS等系统中):
firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload
- 在MySQL命令行中,更新