1.下载地址:
https://dev.mysql.com/downloads/file/?id=485812
2.安装:
端口号 : 3308
密码 : 111111
pip install PyMySQL
进入到 C:\Program Files\MySQL\MySQL Server 8.0\bin 执行数据库操作
或者设置 C:\Program Files\MySQL\MySQL Server 8.0\bin 为环境变量
管理员执行命令提示符:
停止:net stop MySQL80(这台电脑-管理-服务和应用程序-服务-MySQL相关名称的服务)
启动:net start MySQL80
链接到数据库:
指令1:mysql -h localhost -P 3308 -u root -p111111
指令2:mysql -h localhost -P 3308 -u root -p
说明:
-h表示连接的主机IP,
-P表示连接的端口号,这是大写的P
-u表示连接数据库的用户名
-p表示连接数据库的密码,这里是小写的p,如果和密码一起输入时,p和密码之间不能加空格
错误1:
当把 指令1 中的localhost改成本机的ip地址时,如192.168.0.102,提示:
--->mysql: [Warning] Using a password on the command line interface can be insecure.
--->ERROR 1130 (HY000): Host 'KE' is not allowed to connect to this MySQL server
原因1:mysql服务器出于安全考虑,默认只允许本地登录数据库服务器。
方法1:
https://blog.csdn.net/hjulkk/article/details/52563044
1.进入mysql : mysql -h localhost -P 3308 -u root -p111111
然后输入如下命令:
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
select host,user from user;
quit
2.重启:mysql-net stop MySQL80、net start MySQL80
3.终端输入 :mysql -h 192.168.0.102 -P 3308 -u root -p111111
可以了。
============>============>
mysql> use mysql
Database changed
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
4 rows in set (0.00 sec)
mysql> quit
Bye
============>============>
创建数据库和表:
1.创建数据库:-->CREATE DATABASE 要大写
-----》CREATE DATABASE 数据库名;
2.创建表:-->CREATE TABLE 要大写
----->CREATE TABLE 表名 (
属性名 数据类型 [完整约束条件],
属性名 数据类型 [完整约束条件],
...
...
属性名 数据类型 [完整约束条件]
);
如:
CREATE TABLE student (
id int,
name varchar(20)
);
出了一堆问题后,
根据 https://blog.csdn.net/ziyifengfei/article/details/80668730 说明重置信息
临时密码:P8w8h%n9=V:0
进入数据库使用:mysql -h localhost -P 3306 -u root -pP8w8h%n9=V:0(P8w8h%n9=V:0为重置后生成的临时密码)
重置密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '111111';
错误2:
这时候从终端可以操作mysql,但是通过python代码会报错,如下:
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)")
原因2:
最初安装mysql的时候端口号是3308,后面重置信息,端口号还原成默认的3306,
方法2:
把port的传参改成3306即可。
这时候出现新的错误
错误3:
pymysql.err.OperationalError: (1045, "Access denied for user 'user'@'localhost' (using password: YES)")
原因3:
发现用户名用的是[user]而不是最初的[root],所以一直报错,
方法3:
直接把user="user"改成user="root"
如果把host="localhost"改成host="192.168.0.102",这时候报错
错误4:
pymysql.err.InternalError: (1130, "Host 'KE' is not allowed to connect to this MySQL server")
原因4:
没有给host主机授权
方法4:
https://www.cnblogs.com/wuxunyan/p/9095016.html,这时候也可以添加和授权新的用户
在解决错误4的时候的授权命令是错误的:
grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';
改成,grant 和 privileges之间加个all,或者使用select 选具体权限,如下:
/*授予用户通过外网IP对于该数据库的全部权限*/
grant all privileges on `test`.* to 'test'@'%' ;
/*授予用户在本地服务器对该数据库的全部权限*/
grant all privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';
grant select on test.* to 'user1'@'localhost'; /*给予查询权限*/
grant insert on test.* to 'user1'@'localhost'; /*添加插入权限*/
grant delete on test.* to 'user1'@'localhost'; /*添加删除权限*/
grant update on test.* to 'user1'@'localhost'; /*添加权限*/
想设置root为任意ip地址可用,
之间使用
grant all privileges on *.* to 'root'@'%';
或者 grant all privileges on *.* to 'root'@'%' WITH GRANT OPTION;
都报错,错误如下
错误5:
ERROR 1410 (42000): You are not allowed to create a user with GRANT
原因5:
当前user表中没有root - %记录; 可以更新root - localhost 为 root - %
方法5:
http://www.pianshen.com/article/4049291622/
命令1:update user set host = '%' where user = 'root';
出现问题:ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
原因显示:host+user 应该是联合主键,冲突了
命令2:update user set host = '%' where user = 'root' and host='localhost';
设置允许远程用户访问:grant all privileges on *.* to 'root'@'%';