Linux操作系统下复现github上的项目(二):项目的正常运行
linux github项目复现
一、确认环境正确安装
首先确认Mysql数据库已安装
第一篇里讲到,killall mysqld
并且重新service mysqld start
之后,可以正常 starting MYSQL [ok]
但是还有问题依旧没有解决:不能通过mysql .sock连接MySQL问题
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
解决 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)的方法
期间出现bash: mysqld_safe: command not found 解决方法
总结上面的解决方法:(有可能是mysql的初始密码问题)
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
#出现的问题是不能通过 ‘/tmp/mysql .sock’连到服务器,一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql.sock下,所以两者所以软连接一下
/etc/init.d/mysqld stop ##1.停止mysql数据库
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & #忘记密码时跳过授权表启动
ln -s /usr/local/mysql/bin/mysqld_safe /usr/bin
#由于出现报错bash: mysqld_safe: command not found,查看了一下mysqld_safe在/usr/local/mysql/bin/mysqld_safe下,但是系统默认会查找/usr/bin下的命令,所以两者软连接一下。
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & #再重新尝试忘记密码时跳过授权表启动
mysql -u root mysql#无密码登录数据库
#mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';#更新root密码
#报错ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
#最新版MySQL请采用如下SQL:
#mysql> UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root';
#报错ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column,理由是mysql在safe-updates模式中,如果你where后跟的条件不是主键id,那么就会出现这种错误。
SET SQL_SAFE_UPDATES = 0;#执行该命令更改mysql数据库模式
mysql> UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;#刷新权限
mysql> quit;#退出mysql
/etc/init.d/mysqld restart#重启mysql
#8.使用root用户重新登录mysql
mysql -uroot -p
Enter password: <输入新设的密码newpassword>
————————————————
以上需要特别注意的地方是,mysql默认结束标志是分号;输入完一条sql命令后加上分号回车才执行
解决完问题后,确认已正确安装MySQL数据库
然后修改main.cpp数据库中的初始信息
//需要修改的数据库信息,登录名,密码,库名
string user = "root";
string passwd = "root";
string databasename = "mydb";
(vim插入模式i ,退出插入模式ESC或者ctrl+[ )
二、总结mysql库的快速登入
- service mysqld start (看能否正确开启)
- killall mysqld
- /etc/init.d/mysqld restart (重启)
- mysql -uroot -p (登入)
三、项目位置的确认和运行
TinyWebServer被我放到了/home/admin/.ssh下,执行sh ./build.sh
问题一:
和第一篇里一样的错误。linux下解决make: g++: Command not
found
原因是缺少组件导致的,执行yum search "gcc-c++"
查询缺少组件的版本,不同的操作系统版本可能会不一样,切换到root用户,执行yum install "gcc-c++.x86_64" -y
安装对应版本的组件。
问题二:
g++ -o server main.cpp timer/lst_timer.cpp http/http_conn.cpp log/log.cpp CGImysql/sql_connection_pool.cpp webserver.cpp config.cpp -g -lpthread -lmysqlclient
In file included from ./threadpool/threadpool.h:9:0,
from webserver.h:15,
from config.h:4,
from main.cpp:1:
./threadpool/../CGImysql/sql_connection_pool.h:6:25: fatal error: mysql/mysql.h: No such file or directory
#include <mysql/mysql.h>
^
compilation terminated.
make: *** [server] Error 1
是因为没有安装mysql的相关链接库,yum install mysql-devel
问题三:
g++ -o server main.cpp timer/lst_timer.cpp http/http_conn.cpp log/log.cpp CGImysql/sql_connection_pool.cpp webserver.cpp config.cpp -g -lpthread -lmysqlclient
/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status
make: *** [server] Error 1
就是在系统中找不到libmysqlclient.so文件
解决/usr/bin/ld: cannot find -l****
问题的解决办法
中间出现-bash: locate: command not
found/usr/bin/ld: cannot find -lxxx 的解决办法
添加动态链接库的搜索路径首先
locate mysqlclient
,可以看到其实存在libmysqlclient.so,但是、/bin/ld找不到,所以
1.使用 /etc/ld.so.conf 配置文件将库文件所在路径添加到gcc的搜索路径,错误依旧sudo echo ‘/usr/local/mysql/lib/’ >> /etc/ld.so.conf
#这步通过vim /etc/ld.so.conf,可以看到添加成功
sudo ldconfig
#运行该命令,重新载入 /ext/ld.so.conf 中的路径,使修改生效。 gcc -lmysqlclient --verbose #查询库文件libmysqlclient.so 是否能在搜索路径中找到。
2. ln -s建立软连接,错误依旧ln -s /usr/bin/ld /usr/local/mysql/lib #尝试建立软连接,错误依旧
3.修改环境变量,成功
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/ #修改环境变量 LD_LIBRARY_PATH,加入库文件所在路径。使用 export 命令使修改生效。 echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/' >> ~/.bashrc #将上述 export 命令加入到配置文件 ~/.bashrc source ~/.bashrc #使之永久生效。 #若以上尝试修改变量 LD_LIBRARY_PATH 不奏效,则修改变量 LIBRARY_PATH export LIBRARY_PATH=/usr/local/mysql/lib/:$LIBRARY_PATH echo 'export LIBRARY_PATH=/usr/local/mysql/lib/:$LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc #使之永久生效。
目前执行sh ./build.sh
然后可以正常启动./server
更多推荐
所有评论(0)