V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
css3
V2EX  ›  程序员

大佬们帮我看一下这个 sql 的语法问题

  •  
  •   css3 · 2020-02-05 20:01:23 +08:00 · 1705 次点击
    这是一个创建于 1779 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想不进入 mysql 容器内执行 sql 语句(命令行执行是没问题的):

    CREATE USER 'root'@'%' IDENTIFIED BY 'abcd1234';
    GRANT ALL ON *.* TO 'root'@'%';
    

    宿主机执行:

    docker exec -it mysql bash -c 'mysql <<< "CREATE USER 'root'@'%' IDENTIFIED BY 'abcd1234';GRANT ALL ON *.* TO 'root'@'%';"'
    
    
    ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '% IDENTIFIED BY abcd1234' at line 1
    

    报语法错误,引号太多了,我仔细看,感觉也没毛病,但确实是执行不了,各位帮忙看一下,多谢了

    9 条回复    2020-02-06 08:50:57 +08:00
    css3
        1
    css3  
    OP
       2020-02-05 20:15:54 +08:00
    %前加了\也不行😭
    MrUser
        2
    MrUser  
       2020-02-05 20:53:20 +08:00
    试试这个:
    ```
    docker exec -it mysql bash -c 'mysql <<< "CREATE USER \'root\'@\'%\' IDENTIFIED BY \'abcd1234\';GRANT ALL ON *.* TO \'root\'@\'%\';"'
    ```
    css3
        3
    css3  
    OP
       2020-02-05 20:58:53 +08:00
    @MrUser 不行,回车后是个>符号,语句不完整🙃
    GM
        4
    GM  
       2020-02-05 21:14:12 +08:00
    这种容易由于转义导致的问题,建议弄个 sql 文件,然后 mysql < script.sql 这样使用。
    css3
        5
    css3  
    OP
       2020-02-05 21:17:25 +08:00 via iPhone
    @GM #4 文件确实没问题,主要就是不想增加一个文件😂
    GM
        6
    GM  
       2020-02-05 21:43:48 +08:00
    @css3 何必跟自己过不去。。。
    hcymk2
        7
    hcymk2  
       2020-02-05 21:56:39 +08:00
    mysql -e
    msg7086
        8
    msg7086  
       2020-02-06 02:28:12 +08:00   ❤️ 1
    'mysql <<< "CREATE USER '
    root
    '@'
    %
    ' IDENTIFIED BY '
    abcd1234
    ';GRANT ALL ON *.* TO '
    root
    '@'
    %
    ';"'

    你单引号都没转义,就会被 bash 转义,然后就会变成这样。

    我是建议你最外层用双引号,这样就只要转义一对双引号就行了。

    docker exec -it mysql bash -c "mysql <<< \"CREATE USER 'root'@'%' IDENTIFIED BY 'abcd1234';GRANT ALL ON *.* TO 'root'@'%';\" "

    这样试试看。
    css3
        9
    css3  
    OP
       2020-02-06 08:50:57 +08:00
    @msg7086 非常感谢,有用!!!👍👍👍👍👍👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2566 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:39 · PVG 23:39 · LAX 07:39 · JFK 10:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.