一、确认环境正确安装

首先确认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库的快速登入

  1. service mysqld start (看能否正确开启)
  2. killall mysqld
  3. /etc/init.d/mysqld restart (重启)
  4. 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

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐