Mac 上の Redis で bind するアドレスを 127.0.0.1 以外に変更しようとした際に発生したので対処方法を紹介します
環境
macOS 11.7.4
redis-server 7.0.9
解決方法: bind に必ず 127.0.0.1 を付与する
vim /usr/local/etc/redis.conf
bind 0.0.0.0 127.0.0.1
おまけ: プロテクションモードを無効にする
CONFIG SET protected-mode no
これをしないと celery.flower で DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user. が発生します
INFO Running without root/admin privileges
INFO The tool provides tips for installation and installs required python packages
INFO Setup in Darwin 20.6.0
INFO Installed Python: 3.8.16 64bit
INFO Running in Conda
INFO Running in a Virtual Environment
INFO Encoding: UTF-8
INFO Installed pip: 23.0.1
INFO AMD Support:
This version is deprecated and will be removed from a future update.
Nvidia Users MUST answer 'no' to this option.
Enable AMD Support? [y/N] N
Enable Docker? [y/N] N
INFO Docker Disabled
Enable CUDA? [Y/n] n
INFO Skipping ROCm checks as not enabled
INFO Faceswap config written to: /Users/username/faceswap/config/.faceswap
Please ensure your System Dependencies are met
Continue? [y/N] y
Traceback (most recent call last):
File "setup.py", line 1615, in <module>
Install(ENV)
File "setup.py", line 968, in __init__
self._packages.get_required_packages()
File "setup.py", line 447, in get_required_packages
with open(requirements_file, encoding="utf8") as req:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/username/faceswap/requirements/requirements_None.txt'
amd, docker, cuda はすべて No にします
エラーになるので手動で必要なものをインストールします
また CPU をバックグランドとして動作させるように設定ファイルを変更します
当然 SQL を直接コールすることもできます
select の場合には convert or cast 関数どちらかが選択できます
insert
insert into encrypted_user values (null, 'hawk', hex(AES_ENCRYPT('fuga', UNHEX(SHA2('xxx',512)))));
select
select convert(AES_DECRYPT(unhex(password), UNHEX(SHA2('xxx',512))) USING utf8) from encrypted_user;
or
select CAST(aes_decrypt(unhex(password), unhex(sha2('xxx',512))) AS CHAR CHARACTER SET utf8) from encrypted_user;
最後に
MySQL の暗号化機能を SQLAlchemy で扱う方法を紹介しました
データベース側の機能を使うことで Python 側で暗号化復号化を考える必要がないのとカラムの型も単純な文字列として定義できるのでコードはシンプルになります
おそらく一番目にするのは Policy claim missing from the JWT token, credentials will not be generated というエラーかなと思います
これは Onelogin から送られてきたトークン情報に policy というフィールドがないから MinIO 内で使用するポリシー情報を割り当てられませんというエラーになります
こちらを参考に作成しましょう error @achrinza/node-ipc@9.2.5: The engine "node" is incompatible with this module. が発生する場合は
yarn config set ignore-engines true
を設定しましょう
Quasar 側のログインテストページの作成
vim src/pages/LoginPage.vue
<template><div><h1>Login Test Page</h1><button @click="login">Login</button><button @click="logout">Logout</button><div>{{ data }}</div></div></template><script setup>import{ ref, onMounted }from'vue'import axios from'axios'const data =ref('nodata')const api = axios.create({
baseURL:'http://localhost:5000',
withCredentials:true})const fetchUser =async(value)=>{
api.get('/user').then((response)=>{
data.value = response.data
}).catch((error)=>{
console.log(error)})}const login =async(value)=>{
window.location.href ='http://localhost:5000/login';}const logout =async(value)=>{
api.get('/logout').then((response)=>{
data.value = response.data
}).catch((error)=>{
console.log(error)})}onMounted(()=>{fetchUser()})</script>
またルーティングを追加しましょう
vim src/router/routes.js
const routes =[{
path:'/',
component:()=>import('layouts/MainLayout.vue'),
children:[{ path:'', component:()=>import('pages/IndexPage.vue')}]},{
path:'/login',
component:()=>import('layouts/MainLayout.vue'),
children:[{ path:'', component:()=>import('pages/LoginPage.vue')}]},// Always leave this as last one,// but you can also remove it{
path:'/:catchAll(.*)*',
component:()=>import('pages/ErrorNotFound.vue')}]exportdefault routes