【原创】源码安装 Atlas-1.0.3 遇到的问题以及解决办法

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:
      今天 360 团队在 GitHub 上发布了  Atlas-2.0.0   版本。可喜可贺,希望 360 的开发团队能够一直保持下去。借此时机,将之前对 Atlas-1.0.3 的一些理解和使用,以博客形式总结一下。本文主要讲一下在源码安装和刚开始运行 Atlas-1.0.3 时可能遇到的问题。  

=====  

按照安装说明,Atlas-1.0.3 的安装有如下依赖项:  
glib(2.32.x)、libevent(1.4以上)、Lua(5.1.x)、OpenSSL(0.9.8以上)  

基本执行命令如下:  
./bootstrap.sh #可能需要修改其中的路径  
make  
sudo make install  

依赖项的安装不做详细说明,假设已经全部安装好了。  

=====

1. 执行       bootstrap.sh  
下面是源码包中提供的 bootstrap.sh 脚本的内容:  
?
1
2
3
4
5
6
7
[root@Betty Atlas-1.0.3] # vi bootstrap.sh
 
#!/bin/sh
base=$( cd "$(dirname " $0 ")" ; pwd )
cd $base
PKG_CONFIG_PATH= /usr/local/lib/pkgconfig . /configure --with-mysql= /usr --prefix= /usr/local/mysql-proxy CFLAGS= "-DHAVE_LUA_H -O2" LDFLAGS= "-lm -ldl -lcrypto"
LUA_CFLAGS= "-I/usr/local/include/" LUA_LIBS= "-L/usr/local/lib -llua"

运行该脚本会报出如下的错误信息:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
[root@Betty Atlas-1.0.3] # ./bootstrap.sh
checking build system type ... x86_64-unknown-linux-gnu
checking host system type ... x86_64-unknown-linux-gnu
checking target system type ... x86_64-unknown-linux-gnu
checking for a BSD-compatible install ... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk ... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for style of include used by make ... GNU
checking for gcc ... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc ... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep ... /bin/grep -E
checking for ANSI C header files... yes
checking for sys /types .h... yes
checking for sys /stat .h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings .h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix /config .h usability... no
checking minix /config .h presence... no
checking for minix /config .h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for library containing strerror... none required
checking for gcc ... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc ... (cached) gcc3
checking for a sed that does not truncate output... /bin/sed
checking for fgrep ... /bin/grep -F
checking for ld used by gcc ... /usr/bin/ld
checking if the linker ( /usr/bin/ld ) is GNU ld... yes
checking for a BSD-compatible install ... /usr/bin/install -c
checking for gawk ... (cached) gawk
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... -lfl
checking whether yytext is a pointer... yes
checking how to run the C preprocessor... gcc -E
checking whether ln -s works... no, using cp -p
checking for a sed that does not truncate output... (cached) /bin/sed
checking whether make sets $(MAKE)... (cached) yes
checking whether gcc and cc understand -c and -o together... yes
checking for function prototypes... yes
checking for string.h... (cached) yes
checking whether byte ordering is bigendian... no
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister ( /usr/bin/nm -B) interface... BSD nm
checking the maximum length of command line arguments... 98304
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+=" ... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump ... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file .o... yes
checking if gcc supports -c -o file .o... (cached) yes
checking whether the gcc linker ( /usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in ... no
checking dynamic linker characteristics... GNU /Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking shared library path variable... LD_LIBRARY_PATH
checking lua module suffix... so
checking plugin suffix... so
checking for ANSI C header files... (cached) yes
checking for sys /wait .h that is POSIX.1 compatible... yes
checking arpa /inet .h usability... yes
checking arpa /inet .h presence... yes
checking for arpa /inet .h... yes
checking netinet /in .h usability... yes
checking netinet /in .h presence... yes
checking for netinet /in .h... yes
checking sys /filio .h usability... no
checking sys /filio .h presence... no
checking for sys /filio .h... no
checking sys /socket .h usability... yes
checking sys /socket .h presence... yes
checking for sys /socket .h... yes
checking sys /param .h usability... yes
checking sys /param .h presence... yes
checking for sys /param .h... yes
checking sys /time .h usability... yes
checking sys /time .h presence... yes
checking for sys /time .h... yes
checking sys /un .h usability... yes
checking sys /un .h presence... yes
checking for sys /un .h... yes
checking sys /uio .h usability... yes
checking sys /uio .h presence... yes
checking for sys /uio .h... yes
checking sys /ioctl .h usability... yes
checking sys /ioctl .h presence... yes
checking for sys /ioctl .h... yes
checking sys /resource .h usability... yes
checking sys /resource .h presence... yes
checking for sys /resource .h... yes
checking pwd .h usability... yes
checking pwd .h presence... yes
checking for pwd .h... yes
checking signal.h usability... yes
checking signal.h presence... yes
checking for signal.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking libproc.h usability... no
checking libproc.h presence... no
checking for libproc.h... no
checking valgrind /valgrind .h usability... no
checking valgrind /valgrind .h presence... no
checking for valgrind /valgrind .h... no
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for sys /time .h... (cached) yes
checking time .h usability... yes
checking time .h presence... yes
checking for time .h... yes
checking asm /msr .h usability... no
checking asm /msr .h presence... yes
configure: WARNING: asm /msr .h: present but cannot be compiled
configure: WARNING: asm /msr .h:     check for missing prerequisite headers?
configure: WARNING: asm /msr .h: see the Autoconf documentation
configure: WARNING: asm /msr .h:     section "Present But Cannot Be Compiled"
configure: WARNING: asm /msr .h: proceeding with the preprocessor's result
configure: WARNING: asm /msr .h: in the future, the compiler will take precedence
configure: WARNING:     ## ------------------------------------------------------ ##
configure: WARNING:     ## Report this to mysql-proxy-discuss@lists.launchpad.net ##
configure: WARNING:     ## ------------------------------------------------------ ##
checking for asm /msr .h... yes
checking sys /timeb .h usability... yes
checking sys /timeb .h presence... yes
checking for sys /timeb .h... yes
checking sys /times .h usability... yes
checking sys /times .h presence... yes
checking for sys /times .h... yes
checking ia64intrin.h usability... no
checking ia64intrin.h presence... no
checking for ia64intrin.h... no
checking for rdtscll... no
checking for ftime... yes
checking for times ... yes
checking for clock_gettime... no
checking for get_hrtime... no
checking for read_real_time... no
checking for gettimeofday... yes
checking for time ... yes
checking for wait4... yes
checking cc is Sun CC... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking whether char is unsigned... no
checking return type of signal handlers... void
checking whether lstat dereferences a symlink specified with a trailing slash... no
checking whether stat accepts an empty string... no
checking for strftime... yes
checking for library containing socket... none required
checking for library containing gethostbyname... none required
checking for library containing hstrerror... none required
checking for socklen_t... yes
checking for ulong... yes
checking for ulong_t... no
checking for MySQL support... yes
checking for MySQL includes at... -I /usr/include/mysql
checking errmsg.h usability... no
checking errmsg.h presence... no
checking for errmsg.h... no
checking mysql.h usability... no
checking mysql.h presence... no
checking for mysql.h... no
configure: error: mysql.h is required, please install the mysql header package
[root@Betty Atlas-1.0.3] #

失败原因:找不到 mysql.h 。
解决办法:在 bootstrap.sh 文件中添加 CPPFLAGS="-I/usr/local/mysql/include/"  。

修改后  bootstrap.sh    文件如下:  
?
1
2
3
4
5
6
[root@Betty Atlas-1.0.3] # vi bootstrap.sh 
 
#!/bin/sh
base=$( cd "$(dirname " $0 ")" ; pwd )
cd $base
PKG_CONFIG_PATH= /usr/local/lib/pkgconfig . /configure --with-mysql= /usr --prefix= /usr/local/mysql-proxy CFLAGS= "-DHAVE_LUA_H -O2" CPPFLAGS= "-I/usr/local/mysql/include/" LDFLAGS= "-lm -ldl -lcrypto" LUA_CFLAGS= "-I/usr/local/include/" LUA_LIBS= "-L/usr/local/lib -llua"

重新执行 bootstrap.sh 成功(即执行常规操作中的 configure )。

2. 执行 make  
?
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@Betty Atlas-1.0.3] # make
...
libtool: link: gcc -shared  .libs /libproxy_la-proxy-plugin .o   -Wl,-rpath -Wl, /root/workstation/mnt/Atlas-1 .0.3 /src/ .libs -Wl,-rpath -Wl, /usr/local/lib -Wl,-rpath -Wl, /usr/local/mysql-proxy/lib -Wl,-rpath -Wl, /usr/local/lib -L /root/workstation/mnt/Atlas-1 .0.3 /src/ .libs -L /usr/local/lib -L /usr/lib64/mysql -lmysqlclient -lz -lcrypt -L /usr/lib64 -lssl ../.. /src/ .libs /libmysql-proxy .so /root/workstation/mnt/Atlas-1 .0.3 /src/ .libs /libmysql-chassis .so ../.. /src/ .libs /libsql-tokenizer .so /usr/local/lib/libevent .so -lnsl -lresolv -llua /usr/local/lib/libgmodule-2 .0.so /usr/local/lib/libgthread-2 .0.so /root/workstation/mnt/Atlas-1 .0.3 /src/ .libs /libmysql-chassis-timing .so /root/workstation/mnt/Atlas-1 .0.3 /src/ .libs /libmysql-chassis-glibext .so -lm -ldl -lcrypto /usr/local/lib/libglib-2 .0.so -lpthread -lrt  -Wl,-- export -dynamic -pthread   -pthread -Wl,-soname -Wl,libproxy.so -o .libs /libproxy .so
/usr/bin/ld : cannot find -lmysqlclient
collect2: ld returned 1 exit status
make [3]: *** [libproxy.la] Error 1
make [3]: Leaving directory ` /root/workstation/mnt/Atlas-1 .0.3 /plugins/proxy '
make [2]: *** [all-recursive] Error 1
make [2]: Leaving directory ` /root/workstation/mnt/Atlas-1 .0.3 /plugins '
make [1]: *** [all-recursive] Error 1
make [1]: Leaving directory ` /root/workstation/mnt/Atlas-1 .0.3'
make : *** [all] Error 2
[root@Betty Atlas-1.0.3] #

失败原因:找不到 mysqlclient 库。
解决办法:在 bootstrap.sh 文件中修改 LDFLAGS 的内容,添加 "-L/usr/local/mysql/lib/" 。

修改后    bootstrap.sh    文件如下:  
?
1
2
3
4
5
6
7
[root@Betty Atlas-1.0.3] # vi bootstrap.sh
 
#!/bin/sh
base=$( cd "$(dirname " $0 ")" ; pwd )
cd $base
PKG_CONFIG_PATH= /usr/local/lib/pkgconfig . /configure --with-mysql= /usr --prefix= /usr/local/mysql-proxy CFLAGS= "-DHAVE_LUA_H -O2" CPPFLAGS="-I /usr/local/mysql
/include/ " LDFLAGS=" -L /usr/local/mysql/lib/ -lm -ldl -lcrypto " LUA_CFLAGS=" -I /usr/local/include/ " LUA_LIBS=" -L /usr/local/lib -llua"

重新 bootstrap.sh && make 成功。

3. 执行 make install  
?
1
2
3
4
5
6
7
8
9
10
11
12
[root@Betty Atlas-1.0.3] # make install
Making install in src
make [1]: Entering directory ` /root/workstation/mnt/Atlas-1 .0.3 /src '
make  install -am installdirs installscript
make [2]: Entering directory ` /root/workstation/mnt/Atlas-1 .0.3 /src '
/bin/sh .. /libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..  -I /usr/include/mysql  -I /usr/local/include/glib-2 .0 -I /usr/local/lib/glib-2 .0 /include   -I /usr/local/include/ -pthread -I /usr/local/include/glib-2 .0 -I /usr/local/lib/glib-2 .0 /include   -pthread -I /usr/local/include/glib-2 .0 -I /usr/local/lib/glib-2 .0 /include   -I.. /lib/ -I /usr/local/mysql/include/  -DHAVE_LUA_H -O2 -MT libsql_tokenizer_la-sql-tokenizer-keywords.lo -MD -MP -MF .deps /libsql_tokenizer_la-sql-tokenizer-keywords .Tpo -c -o libsql_tokenizer_la-sql-tokenizer-keywords.lo ` test -f '../lib/sql-tokenizer-keywords.c' || echo './' `.. /lib/sql-tokenizer-keywords .c
...
test -z "/usr/local/mysql-proxy/lib/pkgconfig" || /bin/mkdir -p "/usr/local/mysql-proxy/lib/pkgconfig"
  /usr/bin/install -c -m 644 mysql-proxy.pc mysql-chassis.pc '/usr/local/mysql-proxy/lib/pkgconfig'
make [2]: Leaving directory ` /root/workstation/mnt/Atlas-1 .0.3'
make [1]: Leaving directory ` /root/workstation/mnt/Atlas-1 .0.3'
[root@Betty Atlas-1.0.3] #

执行成功。

      此时你会发现,可执行程序 mysql-proxy 和 shell 脚本 mysql-proxyd 并没有安装到系统的标准可执行文件所在目录。可以通过在环境变量 PATH 中添加的方式进行解决。  

4. 运行可执行程序 mysql-proxy  
      尝试执行 mysql-proxy 看有什么输出(以下给出的 log 信息中存在本人添加的调试打印,故与原代码略有差异)。  
?
1
2
3
4
5
6
7
8
9
[root@Betty ~] # mysql-proxy
2013-11-25 14:41:59: (debug) chassis-stats.c:35: created new global chassis stats at 0x41a3f40
2013-11-25 14:41:59: (debug) chassis-timings.c:124: created new global chassis timer info at 0x41a4dd0
2013-11-25 14:41:59: (debug) mysql-proxy-cli.c:329: [MoDB] print_version = 0    default_file = (NULL)
2013-11-25 14:41:59: (debug) mysql-proxy-cli.c:432: [MoDB] base_dir = /usr/local/mysql-proxy
2013-11-25 14:41:59: (critical) chassis-frontend.c:122: Failed to get log directory, please set by --log-path
2013-11-25 14:41:59: (message) Initiating shutdown , requested from mysql-proxy-cli.c:443
2013-11-25 14:41:59: (message) shutting down normally, exit code is: 1
[root@Betty ~] #

      出现一条 critical 日志,大致意思是“无法找到保存日志文件的路径位置,需要通过 --log-path 进行指定”。而执行 mysql-proxyd 脚本得到输出如下:

?
1
2
[root@Betty ~] # mysql-proxyd
Usage: /usr/local/mysql-proxy/bin/mysql-proxyd instance {start|stop|restart|status}

      综上,想要运行起来 Atlas-1.0.3 ,至少要了解如何设置日志目录,以及 instance 所代表的含义。查看 GitHub 上的信息,发现可以通过自定义配置文件解决这两个问题。我的测试配置文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[mysql-proxy]
 
plugins = admin, proxy
 
admin-username = moooofly
admin-password = moooofly
admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin .lua
 
proxy-backend-addresses = 127.0.0.1:3306
#proxy-read-only-backend-addresses = 127.0.0.1:3305@1
 
daemon = true
keepalive = true
 
event-threads = 4
 
log-level = debug
log-path = /usr/local/mysql-proxy/log
 
instance = modb
 
proxy-address = 0.0.0.0:1234
admin-address = 0.0.0.0:2345
 
min-idle-connections = 128
 
#tables = person.mt.id.3
#pwds = user1:+jKsgB3YAG8=, user2:GS+tr4TPgqc=
 
charset = utf8
 
#client-ips = 127.0.0.1, 192.168.1
#lvs-ips = 192.168.1.1

      上述配置中,很多选项目前不需要启用,所以都注释掉了。唯一需要说明的是,Atlas-1.0.3 对配置文件的名字有如下约束:要求配置文件名字和配置文件中的 instance 的名字要保持一致。例如我的配置文件名字为 modb.cnf ,所以 instance 的名字为 modb 。

      重新使用 mysql-proxyd 脚本启动服务程序,输出信息如下:  
?
1
2
3
4
5
6
7
8
9
10
11
12
[root@Betty ~] # mysql-proxyd modb status
MySQL-Proxy of modb is NOT running
[root@Betty ~] # mysql-proxyd modb start
OK: MySQL-Proxy of modb is started
[root@Betty ~] # mysql-proxyd modb status
MySQL-Proxy of modb is running (7186)
MySQL-Proxy of modb is running (7187)
[root@Betty ~] # ps aux|grep mysql-proxy
root      7186  0.0  0.0  57960  1028 ?        S    14:54   0:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults- file = /usr/local/mysql-proxy/conf/modb .cnf
root      7187  0.0  0.0 111524  2356 ?        Sl   14:54   0:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults- file = /usr/local/mysql-proxy/conf/modb .cnf
root      7207  0.0  0.0  61180   752 pts /4    S+   14:54   0:00 grep mysql-proxy
[root@Betty ~] #

      可以看出,服务器程序已经正确启动。此时在 log 目录下会多出如下文件:

?
1
2
3
4
5
6
7
8
9
[root@Betty log] # pwd
/usr/local/mysql-proxy/log
[root@Betty log] #
[root@Betty log] # ll
总计 8
-rw-r----- 1 root root 1233 11-25 14:54 modb.log
-rw------- 1 root root    4 11-25 14:54 modb.pid
-rw-rw-rw- 1 root root    0 11-25 14:54 sql_modb.log
[root@Betty log] #

      其中 modb.log 是服务器的通用日志;sql_modb.log 是经由 Atlas 进行处理、转发的 sql 日志。
启动 Atlas 时 modb.log 中的日志内容:

?
1
2
3
4
5
6
7
8
9
10
11
[root@Betty log] # tail -f modb.log
2013-11-25 14:54:06: (message) mysql-proxy 0.8.2 started - instance: modb
2013-11-25 14:54:06: (message) max open file -descriptors = 1024
2013-11-25 14:54:06: (debug) mysql-proxy-cli.c:649: [MoDB] enter mainloop!!!
2013-11-25 14:54:06: (message) proxy listening on port 0.0.0.0:1234
2013-11-25 14:54:06: (message) added read /write backend: 127.0.0.1:3306
2013-11-25 14:54:06: (message) proxy-plugin.c:2929: [MoDB] current charset is set to utf8
2013-11-25 14:54:06: (message) proxy-plugin.c:2932: [MoDB] min_idle_connections is set to 32
2013-11-25 14:54:06: (message) chassis-event-thread.c:319: starting 3 worker threads(not include main thread)
2013-11-25 14:54:06: (message) chassis-unix-daemon.c:136: [angel] we try to keep PID=7187 alive
2013-11-25 14:54:06: (debug) chassis-unix-daemon.c:155: waiting for 7187

      通过 MySQL 客户端经由 Atlas 访问 MySQL 数据库时,sql_modb.log 中的日志内容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@Betty log] # tail -f sql_modb.log
 
 
[11 /25/2013 14:58:54] C:172.16.80.111 S:127.0.0.1 OK 0.155 "SET NAMES utf8"
[11 /25/2013 14:58:54] C:172.16.80.111 S:127.0.0.1 OK 0.298 "SELECT @@character_set_database, @@collation_database"
[11 /25/2013 14:58:54] C:172.16.80.111 S:127.0.0.1 OK 0.471 "SHOW FULL TABLES WHERE Table_type != 'VIEW'"
[11 /25/2013 14:59:01] C:172.16.80.111 S:127.0.0.1 OK 0.124 "SET NAMES utf8"
[11 /25/2013 14:59:01] C:172.16.80.111 S:127.0.0.1 OK 19.297 "SHOW TABLE STATUS LIKE 'test'"
[11 /25/2013 14:59:01] C:172.16.80.111 S:127.0.0.1 OK 0.308 "SHOW CREATE TABLE `test`"
[11 /25/2013 14:59:01] C:172.16.80.111 S:127.0.0.1 OK 24.835 "SELECT TABLE_NAME, PARTITION_NAME, SUBPARTITION_NAME, PARTITION_METHOD, SUBPARTITION_METHOD, PARTITION_EXPRESSION, SUBPARTITION_EXPRESSION, PARTITION_DESCRIPTION, PARTITION_COMMENT, NODEGROUP, TABLESPACE_NAME FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA LIKE 'python' AND NOT ISNULL(PARTITION_NAME) AND TABLE_NAME LIKE 'test' ORDER BY TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, SUBPARTITION_ORDINAL_POSITION"
[11 /25/2013 14:59:01] C:172.16.80.111 S:127.0.0.1 OK 0.279 "SHOW CREATE TABLE `test`"
[11 /25/2013 14:59:01] C:172.16.80.111 S:127.0.0.1 OK 1.221 "SELECT * FROM `test` LIMIT 0, 1000"
[11 /25/2013 14:59:01] C:172.16.80.111 S:127.0.0.1 OK 0.707 "SHOW COLUMNS FROM `python`.`test`"

至此,一个 源码安装 的、可用的、 具有基本配置 的 Atlas-1.0.3 完成了。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
定位技术
MicroStation软件与Terrasolid插件合集的安装方法
MicroStation软件与Terrasolid插件合集的安装方法
|
11月前
|
NoSQL 数据可视化 安全
Redis安装详解—官方原版
Redis安装详解—官方原版
147 0
|
关系型数据库 MySQL 数据安全/隐私保护
Windows安装Mysql(图文解说详细版,无msi版本)
Windows安装Mysql(图文解说详细版,无msi版本)
Windows安装Mysql(图文解说详细版,无msi版本)
|
安全 PHP C++
【技术分享】Win10 wampserver升级安装php7.2.32
【技术分享】Win10 wampserver升级安装php7.2.32
90 0
【技术分享】Win10 wampserver升级安装php7.2.32
|
程序员 Python Windows
全网首发:安装Python(或其他软件)出现0x80072f7d错误的解决办法
全网首发:安装Python(或其他软件)出现0x80072f7d错误的解决办法
436 0
|
关系型数据库 MySQL Linux
linux安装指定版本mysql教程-简易版
linux安装指定版本mysql教程-简易版
309 0
linux安装指定版本mysql教程-简易版
|
自然语言处理
Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议
原文:Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议          在上一篇中,留下了许可协议的问题,目前已经解决。感谢网友武全的指点! 问题          一般我们是用WixVariable 来设定许可协议。
1024 0
|
关系型数据库 MySQL Java
从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL
1 下载安装包 1.1 压缩包 https://dev.mysql.com/downloads/mysql/ [外链图片转存失败(img-oesO8K09-1566652568838)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 1.
|
关系型数据库 MySQL SQL
UWP MySQL 最新版 6.10.5是坏的
原文:UWP MySQL 最新版 6.10.5是坏的 #实锤#证实了,MySQL 最新版 6.10.5,在UWP平台并不能连接,是坏的       Oracle竟然没有测试吗?直接上线???   我已经把把BUG设置为最高严重等级,提交给了官方。
1161 0