Почему MySQL встроенная функция «Current_user ()» возвращает имя хоста, содержащее символ «%»?

StackOverflow https://stackoverflow.com/questions/4615696

  •  26-09-2019
  •  | 
  •  

Вопрос

MySQL встроен в функцию, чтобы получить имя хоста?

Похожий на

select user(); //this returns  user@userip

Редактировать:

select current_user(); //returns user@10.0.3.%

Последний символ есть % -- Зачем?

Это было полезно?

Решение

select current_user(); returns user@10.0.3.% last simbol is % why ??

то % Является ли запись в mysql.user, который соответствует вашему текущему входу

который может быть получен из

select concat(user, '@', host) from mysql.user;

то % определяется ценностью хоста.

Другие советы

Выберите @@ HostName;

- MySQL 4.1 не было этого.

не будет его работа?

Выберите Substring_index (User (), '@', -1) в качестве имени хоста;

Вышеприведенное неправильное, он возвращает IP-адрес пользователя, а не. Я был одурачен путем тестирования на местных. Извини за это.


Я думаю, это возвращает имя хоста, но это не будет полезно, если вы не будете готовы grep, pipe а также cut Просто FYI:

C:\>mysqladmin -u username -pmypassword -h dev.naishelabs.com version

mysqladmin  Ver 8.41 Distrib 5.0.22, for Win32 on ia32
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.0.77
Protocol version        10
Connection              dev.naishelabs.com via TCP/IP
TCP port                3306
Uptime:                 73 days 5 hours 7 min 45 sec

Если вы хотите имя хоста базы данных сервер, вы можете использовать показать переменные:

mysql> SHOW VARIABLES LIKE 'hostname';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| hostname      | munda |
+---------------+-------+
1 row in set (0.00 sec)

Это не встроенная функция, поэтому ее нельзя использовать в выборе оператора.

Вы ищете ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ функция.

Возвращает имя пользователя и комбинацию имени хоста для учетной записи MySQL, который сервер используется для аутентификации текущего клиента. Эта учетная запись определяет ваши привилегии доступа.

Значение current_user () может отличаться от значения пользователя ().

Вы можете использовать user() а также current_user() Функции. Если вы хотите только имя хоста сделать что-то вроде select substr(current_user(),LOCATE('@', current_user())+1) AS localhost;
Вы можете найти подробную информацию здесь

То @@hostname Переменная содержит системное имя хоста:

$ cat /etc/hostname
bruno

$ hostname
bruno

$ mysql
mysql> SELECT @@hostname;
+------------+
| @@hostname |
+------------+
| bruno      |
+------------+

Обратите внимание, что это может быть объединено и использоваться в других запросах:

mysql> SELECT name, @@hostname FROM people;
+-------+-------------+
| name  | @@hostname  |
+-------+-------------+
| Dotan | bruno       |
+-------+-------------+

mysql> SELECT CONCAT('I am on server ', @@hostname);
+---------------------------------------+
| CONCAT('I am on server ', @@hostname) |
+---------------------------------------+
| I am on server bruno                  |
+---------------------------------------+
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top