My SQL 安装遇到的一系列问题
作为一个刚接触Qt和C++半个月的新手,突发奇想装个数据库,因为看到别人做的界面很酷。可是安装过程就让我很头疼,最终还是成功了,值得记录下来。
My SQL安装
我选择的是My SQL5.7.29 Windows 32位版本。(因为QT5.15.0我也是32位的版本)
SQL下载地址
关于SQL的安装教程,可以参考下面:
https://blog.csdn.net/weixin_37632720/article/details/104536990
遇到的问题:
安装完成后;首先要启动MySQL,打开命令提示符,输入:
cd C:\Program Files (x86)\MySQL\MySQL Server 5.7\bin(提示:这里是参考目录,看你安装在什么位置,bin下面有mysql.exe)进入到这个位置,进入成功如下图所示:
接下来输入安装命令:mysqld -install,若出现Service successfully installed,证明安装成功;如出现Install of the Service Denied,则说明没有以管理员权限来运行cmd:
然后继续输入命令:mysqld --initialize --console,此时命令窗口没有提示,但是bin的同级目录下多了一个data文件夹
开始,我的弄得乱七八糟,这一步一直报错,原因是我的data文件已经存在,如下图报错所示,因为之前没有加上console所以不知道。
如果没有错误,直接下一步:
启动服务,输入:net start mysql,提示如下错误
这时同样使用mysqld - -console来查看,在命令窗口能看到类似下面的错误,主要找[error],这里换颜色来突出。
原因是我已经开了MySQL57服务,再打开MySQL时占用了端口。关掉MySQL57服务,启动MySQL服务,这时应该可以了。
遇到这个问题可参考:
https://blog.csdn.net/qq_37915248/article/details/82631398
接下来进行数据库测试
首先进入到数据库,两个方法:
方法一:命令行输入 cd C:\Program Files (x86)\MySQL\MySQL Server 5.7\bin(前面已经提到),跳转到bin目录下之后,输入mysql -uroot -p
方法二:就是设置环境变量,设置了环境变量之后,不论当前在哪个路径下,输入mysql -uroot -p就可以了
我一直输入密码,但是。。。
我心里有点个大大的问号???其实这是我的密码错了。
之前我在cmd进入过mysql(在我进行mysqld --initialize之前),密码是我安装MySQL的时候设置的(配置界面有个设置密码),那时候完全没毛病。
现在输入之前的密码竟然进不去,我惊了!!!其实,mysqld --initialize --console初始化后,命令窗口有提示一个密码,只是当时没注意看。
不过不用着急,我当时是直接把之前生成的data文件夹删除了,再来一遍mysqld --initialize --console,这次我把命令窗口现实的密码记下来了。大概如下,图是down别人的。
如果密码正确,却出现下面问题,可能是你的MySQL服务尚未启动。
终于,输入密码进入到mysql
当我想查看服务器里数据库时,输入:show databases; 报错了
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决方法 输入 ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘新密码’;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
Query OK, 0 rows affected (0.02 sec)
改完密码后,重启一下MySQL服务
登录数据库,查看数据库是这样的,每个人的可能不同哦。exit;是数据库退出命令
QT编译插件
我下载的是QT5.15.0的win32版本,我用QT打开的运用MySQL的一个程序,打开运行,就提示QMySQL is not loaded
兜兜转转两天没弄好,期间试过弄个低版本5.7来编译,试过把下面插件复制到QT安装目录下面,测试未果。。。
偶然在B站看到一个视频,关于QT编译插件,简直寻到了宝藏。
传送门:https://www.bilibili.com/video/BV13a4y1a73F/
步骤:
1.下载QT源码
下载地址:http://download.qt.io/official_releases/qt/
安装的哪个版本,就找对应的下载。
2.解压:这里我放在D盘目录下
在这个文件夹下面有qtbase文件夹,其实只用到这里面的文件,所以我把它剪切到D盘下面,因为下面很多级目录,复制的时候,路径太长了。。。
3.修改代码
把qtbase拷到D盘后,找到下面路径下的mysql.pro工程,
打开工程,在mysql.pro中把QMAKE_USE += mysql注释掉,也即前面加个#号,再添加下面两行
INCLUDEPATH += "C:/Program Files (x86)/MySQL/MySQL Server 5.7/include/"
LIBS += "C:/Program Files (x86)/MySQL/MySQL Server 5.7/lib/libmysql.lib"
一个是include的路径,另一个是lib文件夹下的libmysql.lib文件,直接将他们的路径复制过来就可以,我的路径是
C:\Program Files (x86)\MySQL\MySQL Server 5.7\lib\libmysql.lib和
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include
但是注意到没,这个“\”得改成"/”
4.添加插件
mysql.pro重新生成后,在D盘下有个plugins文件夹,把qsqlmysql.dll复制到QT的sql插件目录下,即D:\QT\5.15.0\mingw81_32\plugins\sqldrivers下
这时编译我的程序就不会出现QMySQL is not loaded错误了。
QT与数据库的连接
打开Navicat,新建连接,选择MySQL,
如果密码输入错误,点击连接测试,出现如下错误
改正之后
在这个新建的连接下面有几个数据库
右击新建一个数据库 ,设置如下
在info数据库下面新建表student,建立4栏
往表student里面写入数据:
这时QT中打开程序,可以正常运行了,运行如下。
程序输出已经把数据库里写入的数据打印出来了
程序下载:https://pan.baidu.com/s/1BszJ6dECDsq5V44kfpELYQ
提取码:83xf