-- 查看系统用户
select Host,User,Password from mysql.user;
-- 创建一个远程用户
create user test identified by '123456';
-- 分配权限
grant all privileges on *.* to 'test'@'%'identified by '123456' with grant option;
-- 刷新mysql用户权限
flush privileges ;
-- 修改指定用户密码
update mysql.user set password=password('新密码') where User="test" and Host="localhost";
-- 删除用户
delete from user where User='test' and Host='localhost';
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 3 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 0 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
mysql> CREATE USER 'web'@'%' IDENTIFIED BY 'web';
Query OK, 0 rows affected (0.00 sec)
调用了after_request处理完后,要返回response
@app.after_request
def after_request(response):
ik_global.Logger.info("after_request: {}".format(request.url))
# some stuff here
return response
测试调用顺序:
# coding=utf-8
import random
from flask import Flask, render_template, jsonify
from werkzeug.local import LocalStack, LocalProxy
from ext import db
from users import User
app = Flask(__name__, template_folder='../../templates')
app.config.from_object('config')
db.init_app(app)
_user_stack = LocalStack()
def get_current_user():
top = _user_stack.top
if top is None:
raise RuntimeError()
return top
""" 调用current_user时,执行get_current_user,从_user_stack.top获取对象 """
current_user = LocalProxy(get_current_user)
使用current_user,要对其进行压站操作:
@app.before_request
def before_request():
users = User.query.all()
user = random.choice(users)
_user_stack.push(user)
处理请求:调用current_user
@app.route('/users')
def user_view():
users = User.query.all()
return jsonify({"result": current_user.name})
请求接受后,执行出栈
@app.teardown_appcontext
def teardown(exc=None):
if exc is None:
db.session.commit()
else:
db.session.rollback()
db.session.remove()
_user_stack.pop()