Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support for using unixsocket to connect to mysql #6031

Merged
merged 3 commits into from Feb 23, 2024

Conversation

Mars160
Copy link
Contributor

@Mars160 Mars160 commented Feb 14, 2024

用Unixsocket方式为内存拷贝理论上比TCP更高效

本人已测试,功能正常,望合并

Copy link

welcome bot commented Feb 14, 2024

Thanks for opening this pull request! Please check out our contributing guidelines.

@Mars160

This comment was marked as resolved.

@Mars160 Mars160 closed this Feb 23, 2024
@Mars160
Copy link
Contributor Author

Mars160 commented Feb 23, 2024

发现本来pg就可以使用unixsocket连接

Reopen

@Mars160 Mars160 reopened this Feb 23, 2024
@xhofe xhofe merged commit 1f83550 into alist-org:main Feb 23, 2024
2 of 3 checks passed
Copy link

welcome bot commented Feb 23, 2024

Congrats on merging your first pull request! We here at behavior bot are proud of you!

@msycn
Copy link

msycn commented Feb 23, 2024

求地址格式,感谢分享

@msycn
Copy link

msycn commented Feb 23, 2024

用Unixsocket方式为内存拷贝理论上比TCP更高效

本人已测试,功能正常,望合并

"dsn": "/tmp/mysql.sock“ 报错

@Mars160
Copy link
Contributor Author

Mars160 commented Feb 23, 2024

@msycn

求地址格式,感谢分享

看了一下并没有采用我的配置方式,而是直接在配置文件中添加了DSN字段

之前是:

"database": {
    "type": "mysql",
    "host": "localhost",
    "port": 3306,
    "user": "XXXXXX",
    "password": "YYYYYY",
    "name": "alist",
    "db_file": "",
    "table_prefix": "alist_",
    "ssl_mode": ""
  },

现在变成:

"database": {
    "type": "mysql",
    "table_prefix": "alist_",
    "dsn": "XXXXXX[:YYYYYY]@unix(/path/to/mysql.sock)/alist?charset=utf8mb4&parseTime=True&loc=Local"
  },

如果没有密码,dsn可以改成

"dsn": "XXXXXX@unix(/path/to/mysql.sock)/alist?charset=utf8mb4&parseTime=True&loc=Local"

如果需要更加灵活的配置方式,参考GORM的DSN字符串,也就是下面这个,可以自行调整

[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]

我之前设计的配置方式是只需要将host改成unix:/path/to/mysql.sock就好,但是直接配置dsn确实更加灵活

@Mars160

This comment was marked as resolved.

@msycn
Copy link

msycn commented Feb 23, 2024

@msycn

求地址格式,感谢分享

看了一下并没有采用我的配置方式,而是直接在配置文件中添加了DSN字段

之前是:

"database": {
    "type": "mysql",
    "host": "localhost",
    "port": 3306,
    "user": "XXXXXX",
    "password": "YYYYYY",
    "name": "alist",
    "db_file": "",
    "table_prefix": "alist_",
    "ssl_mode": ""
  },

现在变成:

"database": {
    "type": "mysql",
    "table_prefix": "alist_",
    "dsn": "XXXXXX[:YYYYYY]@unix(/path/to/mysql.sock)/alist?charset=utf8mb4&parseTime=True&loc=Local"
  },

如果没有密码,dsn可以改成

"dsn": "XXXXXX@unix(/path/to/mysql.sock)/alist?charset=utf8mb4&parseTime=True&loc=Local"

如果需要更加灵活的配置方式,参考GORM的DSN字符串,也就是下面这个,可以自行调整

[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]

我之前设计的配置方式是只需要将host改成unix:/path/to/mysql.sock就好,但是直接配置dsn确实更加灵活

明白了,感谢大佬 。是这样的格式吧
"database": {
"type": "mysql",
"table_prefix": "alist_",
"dsn": "username[:password]@unix(/tmp/mysql.sock)/alist?charset=utf8mb4&parseTime=True&loc=Local"
},

请问数据库的用户名在哪里填写

@Mars160
Copy link
Contributor Author

Mars160 commented Feb 23, 2024

@msycn 用户名密码等等你所需要的一切都在dsn里面

我的示例是不能直接用的,需要你自行替换一些内容

username[:password]@unix(/tmp/mysql.sock)/alist?charset=utf8mb4&parseTime=True&loc=Local

写成自己的东西就是

//如果有密码
用户名:密码@unix(/tmp/mysql.sock)/数据库名?charset=utf8mb4&parseTime=True&loc=Local

//如果没密码
用户名@unix(/tmp/mysql.sock)/数据库名?charset=utf8mb4&parseTime=True&loc=Local

除去dsn,你的database配置里的其他内容没有问题

@msycn
Copy link

msycn commented Feb 23, 2024

谢谢

@msycn 用户名密码等等你所需要的一切都在dsn里面

我的示例是不能直接用的,需要你自行替换一些内容

username[:password]@unix(/tmp/mysql.sock)/alist?charset=utf8mb4&parseTime=True&loc=Local

写成自己的东西就是

//如果有密码
用户名:密码@unix(/tmp/mysql.sock)/数据库名?charset=utf8mb4&parseTime=True&loc=Local

//如果没密码
用户名@unix(/tmp/mysql.sock)/数据库名?charset=utf8mb4&parseTime=True&loc=Local

除去dsn,你的database配置里的其他内容没有问题

谢谢 调试了一下默认是 "table_prefix": "x_",

EtherealAO pushed a commit to EtherealAO/alist that referenced this pull request Apr 12, 2024
* support for unixsocket to connect to mysql

* feat: customize dsn for mysql and pg

---------

Co-authored-by: Andy Hsu <i@nn.ci>
EtherealAO pushed a commit to EtherealAO/alist that referenced this pull request Apr 12, 2024
* support for unixsocket to connect to mysql

* feat: customize dsn for mysql and pg

---------

Co-authored-by: Andy Hsu <i@nn.ci>
@Nirzak
Copy link

Nirzak commented May 7, 2024

What should be the value if we don't want to use DSN in case of mysql

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants