unix下mysql5.7的安装,远程链接,修改编码方法

本文介绍如何在Ubuntu系统上安装MySQL 5.7,并详细说明配置步骤,包括远程连接、修改默认编码为UTF-8、调整数据库存储位置等。同时提供解决常见问题的方法。

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

1.安装
直接使用apt-get安装 : apt-get install mysql-server-5.7


2.安装后会提示你输入初始密码

3.远程链接

方法1:
安装好的mysql默认是本地链接,需要自己修改配置文件

 

打开mysqld.cnf文件:sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

 

找到bind-address哪一行,默认是:127.0.0.1,修改成:0.0.0.0,便可以通过3306端口进行远程链接

               

方法2:

       直接mysql语句添加用户:

                use mysql;

                create user '新用户名'@‘ip’ identified by '密码';(ip如果设置为%,则所有人都可以链接)

               grant all privileges on *.* to '新用户名'@‘ip’ identified by '密码' WITH GRANT OPTION;(设置管理员权限)

注意:1.如果服务器防火墙开启,则需要在防火墙中开启一下啊端口: sudo ufw allow 3306(基于unbutu的系统)
     如果服务器防火墙关闭,则不要进行任何操作;

            2.如果设置所有人都可以连接数据库,有被撞库删数据的风险(亲身经历),所以可以指定自己的IP地址连接,这样就会降低数据泄漏的风险(不知道自己IP的,可以百度搜索 IP,结果就有本机所在的网络IP地址。)


4.修改MySQL默认编码
mysql默认编码是latin1,不支持中文,所以要用修改配置文件的方法来达到支持中文的目的

1.输入 SHOW VARIABLES LIKE 'char%';查看mysql的编码,可以看到character-set-database和character-set-server默认编码是latin1

   

2.打开配置文件:sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf ,在lc-messages-dir= /usr/share/mysql 语句后添加 character-set-server=utf8 语句,保存退出

                 

3.打开配置文件:sudo vi /etc/mysql/conf.d/mysql.cnf ,在[mysql]后面添加default-character-set=utf8 ,保存退出

                  

4.重新启动mysql:service mysql restart

5.进入mysql,输入 SHOW VARIABLES LIKE 'char%'; 查看编码

  

6.修改表法

    如果远程链接出现这个错误:

ERROR 1130: Host '192.168.0.140' is not allowed to connect to this MySQL

则需要更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

进入mysql:

mysql> use mysql;

mysql>update user set host='%' where user='root';

退出,重启一下mysql,这样就可以链接了

7.修改数据库位置

    unbutu系统默认的mysql数据库大小只有300M,所以有些情况需要移动数据库

    方法:

                1.停止运行mysql:service mysql stop(或者:sudo /etc/init.d/mysql stop)

                2.将数据库移动到你想要转移的位置:

                            sudo cp -r -p /var/lib/mysql /home/user/mysql

                3.编辑mysql配置文件:

                            sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

                            找到datadir这一行,将/var/lib/mysql改成/home/user/mysql,然后保存退出

 

                            

                4.修改AppArmor(ubuntu自带的安全软件)

                        目的:以新设置的数据库存储位置启动

                        方法: sudo vi /etc/apparmor.d/usr.sbin.mysqld

                                   找到/var/lib/mysql/ r,/var/lib/mysql/** rwk, 这两行,注释掉,在下面添加/home/user/mysql/ r,/home/user/mysql/** rwk,保存退出;

                                        

                    5.重启服务:

                                重启appamor : sudo /etc/init.d/apparmor reload

                                 启动mysql: service mysql start     

                                这样,数据库位置就已经改变了                          

 

 

<think>我们已经在OpenWrt上部署了MySQL容器,现在需要了解如何使用这个容器。根据引用[1][2][4]中的信息,使用MySQL容器主要包括连接容器、配置MySQL、创建数据库和用户、以及使用数据库管理工具(如phpMyAdmin)等步骤。下面将详细说明: ### 1. 连接MySQL容器 部署完成后,可以通过以下命令进入容器内部的bash环境: ```bash docker exec -it openwrt-mysql /bin/bash ``` ### 2. 登录MySQL 在容器内部,使用mysql客户端登录: ```bash mysql -uroot -p ``` 输入之前设置的root密码(即`your_strong_password`)即可进入MySQL命令行。 ### 3. 基本MySQL操作 以下是一些基本操作示例: ```sql -- 创建新数据库 CREATE DATABASE mydb; -- 使用数据库 USE mydb; -- 创建表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL ); -- 插入数据 INSERT INTO users (name) VALUES ('Alice'), ('Bob'); -- 查询数据 SELECT * FROM users; ``` ### 4. 允许远程访问(重要) 默认情况下,MySQL root用户可能只允许本地连接。为了从其他设备访问,需要修改用户权限: ```sql -- 修改root用户的访问权限(允许任意主机连接) ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_strong_password'; FLUSH PRIVILEGES; ``` > **注意**:从安全角度考虑,生产环境建议创建专用用户而非直接使用root[^1]。 ### 5. 使用phpMyAdmin(可选) 如果希望使用图形化管理工具,可以部署phpMyAdmin容器: ```bash docker run -d \ --name openwrt-phpmyadmin \ --link openwrt-mysql:db \ -p 8080:80 \ phpmyadmin/phpmyadmin ``` 访问方式:在浏览器中输入`http://openwrt_ip:8080`,使用MySQL的用户名密码登录。 ### 6. 外部程序连接 在OpenWrt同一网络的其他设备上,可以使用以下信息连接MySQL: - 主机:OpenWrt设备的IP地址 - 端口:3306 - 用户名:root(或自建用户) - 密码:`your_strong_password` 例如,在Python程序中使用: ```python import mysql.connector conn = mysql.connector.connect( host="192.168.1.1", # OpenWrt设备IP user="root", password="your_strong_password", database="mydb" ) cursor = conn.cursor() cursor.execute("SELECT * FROM users") print(cursor.fetchall()) ``` ### 7. 数据备份与恢复 备份数据库到外部存储: ```bash docker exec openwrt-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /mnt/sda1/backup/mysql-full-$(date +%F).sql ``` 恢复数据库: ```bash cat /mnt/sda1/backup/mysql-backup.sql | docker exec -i openwrt-mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" ``` --- ### 常见问题解决 1. **连接被拒绝**: - 检查MySQL用户权限是否允许远程连接(参考步骤4) - 确认OpenWrt防火墙放行3306端口: ```bash uci add firewall rule uci set firewall.@rule[-1].src='wan' uci set firewall.@rule[-1].target='ACCEPT' uci set firewall.@rule[-1].proto='tcp' uci set firewall.@rule[-1].dest_port='3306' uci commit firewall /etc/init.d/firewall reload ``` 2. **中文乱码问题**: 确保创建数据库时指定UTF8编码: ```sql CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 3. **性能优化**: - 在`/mnt/sda1/mysql/conf/my.cnf`中添加: ```ini [mysqld] innodb_flush_log_at_trx_commit = 2 innodb_buffer_pool_size = 64M ``` - 重启容器生效:`docker restart openwrt-mysql` > **注意事项**: > - 定期备份重要数据(参考步骤7) > - 避免在OpenWrt上运行高负载数据库操作,因其硬件资源有限 > - 生产环境建议使用更安全的密码策略 §§相关问题§§ 1. 如何修改MySQL容器的root密码? 2. 如何为MySQL容器创建新的数据库和用户? 3. 如何通过外部电脑连接OpenWrt上的MySQL服务? 4. 如何解决MySQL容器启动失败的问题?</think>### 在OpenWrt上使用已部署MySQL容器的完整指南 #### 一、基础连接操作 1. **进入容器终端** ```bash docker exec -it openwrt-mysql /bin/bash ``` 2. **登录MySQL控制台** ```bash mysql -uroot -p ``` 输入部署时设置的密码(`your_strong_password`)即可进入SQL命令行[^1] 3. **基本SQL操作示例** ```sql -- 创建数据库 CREATE DATABASE openwrt_app; -- 创建用户并授权 CREATE USER 'appuser'@'%' IDENTIFIED BY 'user_pass'; GRANT ALL PRIVILEGES ON openwrt_app.* TO 'appuser'@'%'; FLUSH PRIVILEGES; -- 使用数据库 USE openwrt_app; -- 创建数据表 CREATE TABLE devices ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, ip VARCHAR(15) ); ``` #### 二、远程连接配置 1. **允许外部访问(关键步骤)** 在MySQL命令行执行: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_strong_password'; FLUSH PRIVILEGES; ``` > 此操作使其他设备能连接容器[^1] 2. **OpenWrt防火墙配置** ```bash uci add firewall rule uci set firewall.@rule[-1].name='Allow-MySQL' uci set firewall.@rule[-1].src='wan' uci set firewall.@rule[-1].proto='tcp' uci set firewall.@rule[-1].dest_port='3306' uci set firewall.@rule[-1].target='ACCEPT' uci commit firewall /etc/init.d/firewall reload ``` 3. **外部设备连接信息** - 地址: `OpenWrt设备IP` - 端口: `3306` - 用户: `root` 或自建用户 - 密码: 部署时设置的密码 #### 三、图形化管理(推荐) 部署phpMyAdmin容器: ```bash docker run -d \ --name openwrt-phpmyadmin \ --link openwrt-mysql:db \ -p 8080:80 \ phpmyadmin/phpmyadmin ``` 访问:`http://OpenWrt_IP:8080` 使用MySQL凭证登录[^2] #### 四、应用集成示例 1. **WordPress集成** 修改`wp-config.php`配置: ```php define('DB_HOST', 'OpenWrt_IP:3306'); define('DB_USER', 'appuser'); define('DB_PASSWORD', 'user_pass'); ``` 2. **OwnCloud私有云配置** 编辑`/etc/nginx/conf.d/owncloud.conf`: ```nginx location ~ ^/owncloud(.php)?$ { fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param MYSQL_HOST "OpenWrt_IP"; fastcgi_param MYSQL_USER "appuser"; } ``` 需安装`php5-mod-dom`和`php5-mod-simplexml`[^4] #### 五、数据维护操作 1. **备份数据库** ```bash docker exec openwrt-mysql sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --all-databases' > /mnt/sda1/mysql_backup/$(date +%F).sql ``` 2. **恢复数据库** ```bash cat backup.sql | docker exec -i openwrt-mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" ``` #### 六、性能监控 查看资源使用: ```bash docker stats openwrt-mysql ``` 输出示例: ``` CONTAINER ID CPU % MEM USAGE / LIMIT MEM % NET I/O abcd1234 12% 210MiB / 512MiB 41% 1.2GB / 800MB ``` > **注意事项** > 1. 生产环境避免使用root账户,应创建专用用户 > 2. 定期检查存储空间:`df -h /mnt/sda1` > 3. 高并发场景需调整`innodb_buffer_pool_size`(参考`/mnt/sda1/mysql/conf/my.cnf`) > 4. 容器更新时先备份数据再执行`docker pull mysql:5.7.42`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值