Linux 安装和远程连接 mysql

本文详细介绍了在CentOS 6.9环境下安装MySQL 5.6的步骤,包括下载安装包、配置环境变量、安装数据库、解决常见错误、设置远程连接等关键过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我以centos6.9为例,然后我们需要准备的是下载mysql的安装包
有两种方式:
第一种是去官网下载
下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads
版本:5.6.42,通用版,linux 64位
在这里插入图片描述
第二种是使用wget命令直接下载
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
我这里使用的是第二种方式
[root@CentOS /]# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
把安装包移动到 /usr/local下面
[root@CentOS /]# mv mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz /usr/local/
在这里插入图片描述
切换路径 cd /usr/local
解压安装包 [root@CentOS local]# tar zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
在这里插入图片描述
将解压后的文件夹重命名为mysql
[root@CentOS local]# mv mysql-5.6.33-linux-glibc2.5-x86_64 mysql
在这里插入图片描述
添加系统用户组和用户
groupadd mysql
useradd -r -g mysql mysql
进入mysql根目录: cd /usr/local/mysql
修改当前目录拥有者为mysql用户:chown -R mysql:mysql ./
安装数据库: ./scripts/mysql_install_db --user=mysql

如果安装时报以下错误
错误:FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解决:yum install -y perl-Module-Install.noarch
或者:yum -y install autoconf //此包安装时会安装Data:Dumper模块

错误:Installing MySQL system tables…/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:yum install libaio* -y

修改当前目录拥有者为root用户: chown -R root:root ./
修改当前data目录拥有者为mysql用户:chown -R mysql:mysql data
然后我们复制 /usr/local/mysql/support-files/mysql.server 到 /etc/init.d并重命名为mysql,作为启动文件
[root@CentOS mysql]# cp support-files/mysql.server /etc/init.d/mysql
启动服务
[root@CentOS mysql]# /etc/init.d/mysql start
在这里插入图片描述

如果启动时报以下错误:
[root@izwz9bk2m2a7r73p9l0he5z mysql]# /etc/init.d/mysql start
Starting MySQL.touch: cannot touch ‘/var/log/mariadb/mariadb.log’: No such file or directory
chmod: cannot access ‘/var/log/mariadb/mariadb.log’: No such file or directory
touch: cannot touch ‘/var/log/mariadb/mariadb.log’: No such file or directory
chown: cannot access ‘/var/log/mariadb/mariadb.log’: No such file or directory
/usr/local/mysql/bin/mysqld_safe: line 129: /var/log/mariadb/mariadb.log: No such file or directory
/usr/local/mysql/bin/mysqld_safe: line 166: /var/log/mariadb/mariadb.log: No such file or directory
touch: cannot touch ‘/var/log/mariadb/mariadb.log’: No such file or directory
chown: cannot access ‘/var/log/mariadb/mariadb.log’: No such file or directory
chmod: cannot access ‘/var/log/mariadb/mariadb.log’: No such file or directory
/usr/local/mysql/bin/mysqld_safe: line 129: /var/log/mariadb/mariadb.log: No such file or directory
The server quit without updating PID file (/var/lib/mysql/i[FAILED]2a7r73p9l0he5z.pid).
解决:

修改my.cnf文件   vim /etc/my.cnf或者/usr/local/mysql/my.cnf
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid

mkdir /var/log/mariadb 
chmod 700 /var/log/mariadb

为了方便使用mysql来连接数据库
我们去配置一个环境变量
[root@CentOS mysql]# vim /etc/profile
编辑按 i
在文件最后一行加上 export PATH=$PATH:/usr/local/mysql/bin
在这里插入图片描述
保存并退出 esc shift+zz
刷新配置文件 [root@CentOS mysql]# source /etc/profile
环境变量配置好之后就可以使用服务命令操作mysql数据库了
service mysql start
service mysql restart
service mysql stop
service mysql status

至此,发现我们还不知道密码,只有绕过验证去修改一个了
编辑配置文件 vim /etc/my.cnf或者/usr/local/mysql/my.cnf
编辑按 i
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程
在这里插入图片描述
保持并退出 esc shift+zz
重启mysql服务
[root@CentOS mysql]# /etc/init.d/mysql restart(或service mysql restart)
使用root用户连接
[root@CentOS mysql]# mysql -uroot -p
密码任意
在这里插入图片描述
报这个错是因为 /tmp下没有mysql.sock文件
解决:
mysql.sock是一个临时文件,在mysql服务启动时会自动生成
用find命令可以找到mysql.sock文件,只不过不在/tmp目录下而已
[root@localhost /]# find / -name mysql.sock
/var/lib/mysql/mysql.sock
解决方法:
建立软连接到/tmp目录下:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

除此之外也可以建立一个TCP/IP连接,因为这样它就不会使用套接字文件进行连接
mysql -uroot -h 127.0.0.1 -p
密码任意
在这里插入图片描述
出现这个界面表示连接成功
连接成功后选择数据库

mysql> use mysql;
mysql> update user set password=password('你的新密码') where user='root';
mysql> flush privileges;(//强制刷新)
mysql> quit(或者\q)

去掉刚才/etc/my.cnf或者/usr/local/mysql/my.cnf文件中添加的 skip-grant-tables
保存后重启mysql服务
使用账号密码登录mysql
[root@CentOS mysql]# mysql -uroot -h 127.0.0.1 -p
输入刚才设置的密码
登录成功
切换数据库 use mysql;
查询所有表 show tables;
其中user表中就记录了mysql数据库中所有用户的账号密码信息,但是密码是加密后的密文
我们可以输入查询语句看看
select host,user,password from user;
在这里插入图片描述
下面我来讲讲怎么设置远程连接这个数据库
第一种:指定ip连接
//授权用户表

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.124.188' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql> flush privileges;

在这里插入图片描述
然后我们在看看user表中的数据
在这里插入图片描述
发现多了刚才授权的那个ip已经添加入库了
第二种:允许所有ip都能远程

//修改 localhost 为 %
mysql> update user set host='%' where host='localhost';
//强制刷新
mysql> flush privileges;

最后关闭防火墙或者在防火墙中添加一个端口3306才能被访问
//关闭防火墙
service iptables stop
//查看防火墙状态
service iptables stop
//启动防火墙
service iptables start
先关闭防火墙用navicat连接试试
在这里插入图片描述
在这里插入图片描述
至此mysql数据库安装成功
在防火墙中添加端口就不多说了,在这篇文章中有提到
https://blog.youkuaiyun.com/xiaTianCsDN/article/details/82229519

### 配置 MySQL 以允许远程连接 为了使 MySQL 能够接受来自其他机器的请求,在服务器端需要修改 MySQL 的配置文件 `my.cnf` 或者 `mysqld.cnf` 文件。通常这个文件位于 `/etc/mysql/my.cnf`, `/etc/my.cnf.d/server.cnf` 或者 `/etc/my.cnf` 中。 #### 修改绑定地址 默认情况下,MySQL 绑定到本地回环接口 (127.0.0.1),这意味着它只监听来自同一台计算机上的客户端连接。要让 MySQL 接受外部网络中的连接,则需更改 bind-address 参数为实际 IP 地址或将其设置为空字符串来表示所有可用网卡: ```ini bind-address = 0.0.0.0 ``` 此操作会使得 MySQL 对所有的 IPv4 连接开放[^2]。 #### 用户权限调整 除了上述配置外,还需要确保有适当权限授予给那些希望从远端访问数据库系统的账户。这可以通过执行 SQL 命令完成: ```sql GRANT ALL PRIVILEGES ON *.* TO &#39;username&#39;@&#39;%&#39; IDENTIFIED BY &#39;password&#39;; FLUSH PRIVILEGES; ``` 这里 `&#39;username&#39;` `&#39;password&#39;` 应替换为你想要创建的具体用户名及其密码;而 `%` 表示任何主机都可以作为来源进行登录尝试。如果只想允许特定 IP 访问的话可以将 `%` 替换成具体的IP地址。 #### 安全考虑事项 当启用了远程访问之后,安全风险也会随之增加。因此建议采取额外措施保护系统免遭未授权访问威胁,比如通过防火墙规则仅限于信任源站可到达 MySQL 端口(通常是3306), 使用SSL加密传输数据流等方法增强安全性。 #### 测试连接 最后一步是在另一台设备上测试能否成功建立与新配置好的 MySQL 数据库之间的 TCP/IP 连接。可以从命令行界面运行如下指令来进行验证: ```bash mysql -h <server_ip> -P 3306 -u username -p ``` 其中 `<server_ip>` 是指代目标 MySQL Server 所处位置的真实公网 IP 地址或者域名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值