本文主要是介绍Skr-Eric的Mysql课堂(七)——Mysql的用户管理、调优、与Python的交互,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MySQL用户账户管理
1、开启MySQL远程连接(改配置文件)
1、sudo -i
2、cd /etc/mysql/mysql.conf.d/
3、cp mysqld.cnf mysqld.cnf.bak2
4、vi mysqld.cnf
#bind-address=127.0.0.1
把前面 # 去掉,保存退出
vi mysqld.cnf
按a -> 改内容 -> 按ESC -> 按 shift + : -> wq
5、/etc/init.d/mysql restart
2、用root用户添加授权用户
1、用root用户登录mysql
mysql -uroot -p123456
2、授权
grant 权限列表 on 库名.表名
to "用户名"@"%" identified by "密码"
with grant option;
权限列表 :all privileges、select、update
库名.表名 :db4.* 、*.*(所有库的所有表)
3、示例
1、添加授权用户tiger,密码123,对所有库的所有表有所有权限,可从任何IP去连接
grant all privileges on *.*
to "tiger"@"%"
identified by "123"
with grant option;
2、添加授权用户rabbit,密码123,对db4库所有表只有查询权限,可从任何IP去连接
grant select on db4.*
to "rabbit"@"%" identified by "123"
with grant option;
MySQL调优
1、创建索引
在select、where、order by常涉及到的字段建立索引
2、选择合适存储引擎
1、读操作多 :MyISAM
2、写操作多 :InnoDB
3、SQL语句优化(避免全表扫描)
1、where子句尽量不使用 != ,否则放弃索引全表扫描
2、尽量避免NULL判断,全表扫描
优化前:
select number from t1 where number is null;
优化后:
在number字段设置默认值0,确保number字段无NULL
select number from t1 where number=0;
3、尽量避免用or连接条件,否则全表扫描
优化前:
select id from t1 where id=10 or id=20;
优化后:
select id from t1 where id=10
union all
select id from t1 where id=20;
4、模糊查询尽量避免使用前置 %,否则全表扫描
select variable from t1 where name="secure%";
5、尽量避免使用in和not in,否则全表扫描
优化前 :
select id from t1 where id in(1,2,3,4);
优化后 :
select id from t1 where id between 1 and 4;
6、不能使用 select * ...
用具体字段代替*,不要返回用不到的任何字段
与Python交互
1、交互类型
1、python3
模块名 :pymysql
安装 :
1、在线 :sudo pip3 install pymysql
2、离线 :pymysql.tar.gz
解压:setup.py
python3 setup.py install
2、python2
模块名 :MySQLdb
安装 :sudo pip install mysql-python
2、pymysql使用流程
1、建立数据库连接对象(db=pymysql.connect("root".
2、创建游标对象cur(操作数据库的对象)
3、游标对象:cur.execute("insert into sheng ...;")
4、提交到数据库执行 :db.commit()
5、关闭游标对象cur.close()
6、关闭数据库连接对象db.close()
示例 :01_pymysql示例.py
3、connect连接对象
1、db = pymysql.connect(参数列表)
1、host :主机地址
2、user :用户名
3、password :密码
4、database :库
5、charset :编码方式,推荐utf8
6、port :端口(3306)
2、db (数据库连接对象) 的方法
1、db.close() :断开连接
2、db.commit() :提交到数据库执行
3、db.cursor() :游标对象,用来执行SQL命令
4、db.rollback() :回滚
3、cursor 游标对象 的方法
1、execute(SQL命令) :执行SQL命令
2、close() :关闭游标对象
3、fetchone() :获取查询结果的第1条数据
4、fetchmany(n) :获取n条数据
5、fetchall() :获取所有数据
## fetchmany(n) 和 fetchall() 得到的结果一定是一个大元组套着小元组 ((),(),())
想要看更多的课程请微信关注SkrEric的编程课堂
这篇关于Skr-Eric的Mysql课堂(七)——Mysql的用户管理、调优、与Python的交互的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!