本文用于部署Mysql做记录,作为备忘。
1、下载Mysql
Download MySQL Community Serverdev.mysql.com
下载Mysql的ZIP文件包,解压到本地。
2、创建my.ini
将以下配置粘贴至my.ini中。
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:Sql Servermysql-8.0.12-winx64 # 切记此处一定要用双斜杠,单斜杠我这里会出错。
# 设置mysql数据库的数据的存放目录
datadir=D:Sql Servermysql-8.0.12-winx64Data # 此处同上
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
#查询日志
log=D:mysql_log.txt
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
3、启动Mysql
在shell中,
命令:mysqld --initialize #直接初始化mysql,生成data文件夹中的文件。
命令:mysqld -install #安装mysql
命令:net start mysql #启动服务器
命令:net stop mysql #停止服务器
4、登录
此时用mysql -uroot -p登录时,不知道密码,按以下步骤设置密码。
编辑解压目录下的 my.ini文件,在[mysqld]这个条目下加入
skip-grant-tables
保存退出后重启mysql
① 点击“开始”->“运行”(快捷键Win+R)。
② 停止:输入 net stop mysql
③ 启动:输入 net start mysql
这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入。
6、更新密码
(1)进入mysql 数据库:
usemysql> mysql;
Database changed
(2)给root用户设置新密码,在命令行输入:
mysql>(版本5.7)update user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
Query OK, 1 rows affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
(3)刷新数据库
mysql> flush privileges;
(4)退出mysql:
mysql> quit
Bye
改好之后,再修改一下my.ini这个文件,把我们刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql就可以了。
7、新增用户
Mysql8以后需要先创建用户再进行授权。
注意@前后不能有空格。
create user 'test'@'%' identified by 'admin123';
grant all on *.* @ 'test'@'%';
8、新建数据库
以root权限登录mysql,创建testDB数据库
create
9、授权数据库权限给相关用户
授权对应数据库的用户权限给制定用户,需要先进行创建用户。
grant all privileges on testDB.* to 'user'@"%";
grant select,update,delete,create,drop on *.* to 'test'@localhost;
创建完毕后需要刷新权限
flush privileges;
10、删除用户
drop user 用户名@'%'
drop user 用户名@'localhost'
delete from user where user='user' and Host = 'localhost';
flush privileges;
11、删除数据库
drop database testDB;
12、删除数据表
drop table 数据表名;
13、列出所有数据库
show databases;
14、列出所有表
show tables;
15、显示数据表结构
describe 数据表名;
Python中使用Mysql
Mysql8.0版本之后将caching_sha2_password作为默认的身份验证插件。
caching_sha2_password和sha256_password认证插件提供比mysql_native_password插件更安全的密码加密 ,并 caching_sha2_password提供了比更好的性能sha256_password。由于这些优越的安全性和性能特性 caching_sha2_password它是MySQL 8.0首选的身份验证插件,而且也是默认的身份验证插件而不是 mysql_native_password。此更改会影响服务器和libmysqlclient 客户端库;目前来说和经常使用的客户端软件兼容性不好。
1、caching_sha2_password兼容性问题和解决方案
如果您的MySQL安装必须服务于8.0之前的客户端,并且在升级到MySQL 8.0或更高版本后遇到兼容性问题,解决这些问题并恢复8.0之前的兼容性的最简单方法是重新配置服务器以恢复到以前的默认身份验证插件(mysql_native_password)。例如,在配置文件my.cnf中使用以下行:
[mysqld]
default_authentication_plugin=mysql_native_password
该设置允许8.0之前的客户端连接到8.0服务器,直到安装使用的客户端和连接器升级为了 caching_sha2_password。但是,该设置应被视为临时设置,而不是长期或永久性解决方案,因为它会导致使用有效设置创建的新帐户放弃提供的改进的身份验证安全性 caching_sha2_password
注意:
如果目前使用的客户端和连接器不支持caching_sha2_password,则可以使用修改后的数据目录初始化过程,该过程会在创建root帐户后mysql_native_password立即关联该帐户,可以在初始化数据库的时候使用以下的方法解决:
①:初始化数据库的时候使用参数:--default-authentication-plugin=mysql_native_password 加上--initialize或 --initialize-insecure
②:在配置文件中设置 default_authentication_plugin 为mysql_native_password选项,并使用--defaults-file选项和--initializeor 或 --initialize-insecure。
(在这种情况下,如果您继续将该选项文件用于后续服务器启动,则将创建新帐户,mysql_native_password而不是 caching_sha2_password除非您default_authentication_plugin 从选项文件中删除该 设置。)
Python3连接Mysql
pip install mysql-connector-python
在程序中连接db,前提是mysql数据库中已改为mysql_native_password.
db = mysql.connector.connect(host="10.61.16.110", port=3306, user="astronomy", password="Ztw6020485!", database="njhx", auth_plugin='mysql_native_password')