Browse Source

使用Docker部署MYSQL和建立数据表,使用php远程访问学习示例

蘭雅sRGB 3 years ago
parent
commit
ff068b404d
1 changed files with 140 additions and 0 deletions
  1. 140 0
      mysql_test.md

+ 140 - 0
mysql_test.md

@@ -0,0 +1,140 @@
+![mysql.webp][1]
+## 使用Docker部署MYSQL和建立数据表,使用php远程访问学习示例
+
+### 命令: vim `docker-compose.yml`  # 建立 `docker-compose` 部署文件
+
+```
+version: '3.1'
+services:
+  db:
+    image: mysql
+    command: --default-authentication-plugin=mysql_native_password
+    restart: always
+    environment:
+      MYSQL_ROOT_PASSWORD: test-mysql@2022
+    ports:
+      - 53306:3306
+
+  adminer:
+    image: adminer
+    restart: always
+    ports:
+      - 10086:8080
+```
+
+### 使用 `linuxserver/docker-compose` 部署 MYSQL 和 adminer 服务
+
+```
+docker run --rm \
+  -v /var/run/docker.sock:/var/run/docker.sock \
+  -v "$PWD:$PWD" \
+  -w="$PWD" \
+  linuxserver/docker-compose \
+  up
+```
+
+### 部署完成,浏览器访问  `http://ip:10086` 登陆管理建立数据库
+
+- 可以web-ui建立数据库和添加用户,也可以使用执行 sql 命令完成创建用户
+
+```
+# 创建数数据库: world
+CREATE DATABASE `world` COLLATE 'utf8mb4_bin';
+
+# 创建用户密码
+CREATE USER 'test'@'%' IDENTIFIED BY 'NSbgs4Z8nYAnqhW';
+
+# 修改用户密码
+SET PASSWORD FOR 'test'@'localhost' = 'test@localhost';
+
+# 修改远程链接的用户
+CREATE USER 'test22'@'%' IDENTIFIED BY 'NSbgs4Z8nYAnqhW';
+GRANT ALL PRIVILEGES ON `world`.* TO 'test22'@'%';
+```
+SQL命令中的 'test22'@'%' 可以这样理解: test22是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,
+你也可替换成任意其它用户名或指定唯一的IP地址;'MyPassword'是给授权用户指定的登录数据库的密码
+
+![111.png][2]
+
+### `CREATE TABLE` 创建 `City` 数据表,如果已经存在,使用 `DROP TABLE` 先删除
+
+```
+# DROP TABLE IF EXISTS `City`; 
+CREATE TABLE `City` ( `ID` int, `Name` text, `CountryCode` text,
+`District` text, `Population` int );
+```
+
+### `INSERT INTO` 向 `City` 数据表插入数据,或者使用备份的出来的数据导入 `City.sql.gz` [下载](https://github.com/hongwenjun/vps_setup/raw/remove/mysql/City.sql.gz)
+- `City.sql.gz` [下载](https://github.com/hongwenjun/vps_setup/raw/remove/mysql/City.sql.gz)
+
+```
+INSERT INTO `City` (`ID`, `Name`, `CountryCode`, `District`, `Population`) VALUES
+(1,	'Kabul',	'AFG',	'Kabol',	1780000),
+(2,	'Qandahar',	'AFG',	'Qandahar',	237500),
+(3,	'Herat',	'AFG',	'Herat',	186800),
+(4,	'Mazar-e-Sharif',	'AFG',	'Balkh',	127800),
+(5,	'Amsterdam',	'NLD',	'Noord-Holland',	731200),
+
+(4078,	'Nablus',	'PSE',	'Nablus',	100231),
+(4079,	'Rafah',	'PSE',	'Rafah',	92020);
+
+```
+
+## 使用php远程访问学习示例  
+
+### 在建立php环境的机器上,使用命令行测试
+
+```
+docker exec -it  nginx-php bash
+php -a
+
+$link = mysqli_connect("18.18.18.18", "test22", "NSbgs4Z8nYAnqhW", "world","53306");
+$result = mysqli_query($link, "SELECT * FROM City LIMIT 10");
+$rows = mysqli_fetch_all($result); 
+var_dump($rows);
+
+```
+
+![test.php.png][3]
+
+### `test.php` 源码, 演示站 https://262235.xyz/test/test.php  (php服务国内,mysql在美西)
+
+```
+<?php
+// $link = mysqli_connect("localhost", "my_user", "my_password", "world");
+$link = mysqli_connect("18.18.18.18", "test22", "NSbgs4Z8nYAnqhW", "world","53306");
+
+/* check connection */
+if (mysqli_connect_errno()) {
+    printf("Connect failed: %s\n", mysqli_connect_error());
+    exit();
+}
+
+/* Create table doesn't return a resultset */
+if (mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
+    printf("Table myCity successfully created.\n");
+}
+
+/* Select queries return a resultset */
+if ($result = mysqli_query($link, "SELECT * FROM City LIMIT 10")) {
+  printf("Select returned %d rows.\n", mysqli_num_rows($result));
+
+  $rows = mysqli_fetch_all($result, MYSQLI_ASSOC); 
+  var_dump($rows);
+
+  /* free result set */
+  mysqli_free_result($result);
+}
+
+$result = mysqli_query($link, "SELECT * FROM City LIMIT 10");
+$rows = mysqli_fetch_all($result); 
+var_dump($rows);
+
+mysqli_close($link);
+?>
+```
+
+
+  [1]: https://262235.xyz/usr/uploads/2021/12/1342246453.webp
+  [2]: https://262235.xyz/usr/uploads/2021/12/1011972683.png
+  [3]: https://262235.xyz/usr/uploads/2021/12/925080225.png