Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: Astor в Apr 08, 2010, 16:03



Титла: Връзка с mysql сървър?
Публикувано от: Astor в Apr 08, 2010, 16:03
Здравейте, имам следния проблем: инсталиран е host със slackware с mysql сървър на него. Когато се опитам локално да вляза в mysql сървъра с: mysql -u 'user' -p си влизам нормално.
При опит от друг компютър отдалечено да вляза със същия потребител от Windows host чрез Query Browsera ми изпислва следната грешка:
Цитат
MySQL Error Number 2003
Can't connect to MySQL server on 'IP_Slack' (10061)
Къде може да е проблема?
Четох, че в един ред от конфигурационния файл my.cnf: bind-address трябва да е зададено IP, от което да се достъпва сървъра. Аз в /etc нямам my.cnf имам 4 други файла: my-small/medium/large/huge.cnf, в които няма такъв конфигурацинен ред. Дори и да преименувам някой от тях на /etc/my.cnf и да обавя такъв конфигурационен ред с windows IP-то, пак излиза същата грешка.  ???


Титла: Re: Връзка с mysql сървър?
Публикувано от: ntrance в Apr 08, 2010, 16:11
Махни му    "bind-address           = 127.0.0.1"


Титла: Re: Връзка с mysql сървър?
Публикувано от: laskov в Apr 08, 2010, 16:33
Намери конфигурационния му файл и коментирай skipnetwork


Титла: Re: Връзка с mysql сървър?
Публикувано от: Astor в Apr 08, 2010, 17:36
Благодаря ви за отговорите, но май пак не стават нещата!
Ето го конфигурационния ми файл:
Цитат
[client]
#password   = your_password
port      = 3306
socket      = /var/run/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port      = 3306
socket      = /var/run/mysql/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
bind-address=192.168.0.8
thread_stack = 128K

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
server-id   = 1

# Uncomment the following if you want to log updates
#log-bin=mysql-bin

# Disable Federated by default
skip-federated

# Uncomment the following if you are NOT using BDB tables
#skip-bdb

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout
Само да вметна, че конфигурационния файл /etc/my.cnf аз го създадох, чрез преименуване на my-small.cnf. В него нямаше изобщо bind-address и аз го добавих, както е в момента.
Редовете:
Цитат
#skip-networking
server-id   = 0
  и да ги коментирам и двата или да променя server-id с 1 все не става :(



Титла: Re: Връзка с mysql сървър?
Публикувано от: ntrance в Apr 08, 2010, 17:39
/etc/rc.d/rc.mysqld   а тук променили нещо ?


Титла: Re: Връзка с mysql сървър?
Публикувано от: Astor в Apr 08, 2010, 17:46
след всяка промяна давам:
Цитат
./etc/rc.d/rc.mysqld restart


Титла: Re: Връзка с mysql сървър?
Публикувано от: VladSun в Apr 08, 2010, 19:22
Дай изхода от:

Код
GeSHi (Bash):
  1. netstat -ntap | grep -i sql


Титла: Re: Връзка с mysql сървър?
Публикувано от: niakoi в Apr 08, 2010, 19:45
Само 1 предположение - в mysql можеше да задаваш кои юзъри от кои хостове могат да влизат, да не е само за локалхост на въпросния потребител?

п.с. за командата на влад трябва да си супер юзър

поздрави
нас


Титла: Re: Връзка с mysql сървър?
Публикувано от: laskov в Apr 08, 2010, 21:59
и прочети какво пише в /etc/rc.d/rc.mysqld ...
Там пише, че трябва да създадеш една база данни и да коментираш още едно SKIP="--skip-networking"


Титла: Re: Връзка с mysql сървър?
Публикувано от: jet в Apr 09, 2010, 06:06
виж съвета на niakoi
по дефолт mysql дава достъп сам на потребители от localhost, за да се връзваш от други компютри трябва да разрешиш и техните ИП-та

mysql -u root -p
GRANT ALL PRIVILEGES ON ime_baza.* TO username@'IP-to_na_clienta' IDENTIFIED BY 'parola';
FLUSH PRIVILEGES;

можеш да изолзваш маска: "192.168.1.%"


Титла: Re: Връзка с mysql сървър?
Публикувано от: VladSun в Apr 09, 2010, 11:59
Съмнявам се да е "липса на права" - самата връзка към сървера не може да бъде изградена.


Титла: Re: Връзка с mysql сървър?
Публикувано от: Astor в Apr 09, 2010, 12:51
Благодаря ви за отговорите. mysql не слуша мрежата:
Цитат
#netstat -ntap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:37              0.0.0.0:*               LISTEN      3030/inetd     
tcp        0      0 0.0.0.0:113             0.0.0.0:*               LISTEN      3030/inetd     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3042/sshd               
tcp6       0      0 :::139                  :::*                    LISTEN      3204/smbd       
tcp6       0      0 :::22                   :::*                    LISTEN      3042/sshd       
tcp6       0      0 :::445                  :::*                    LISTEN      3204/smbd       

а инъче mysql го има като процес с ps -ef...та все не иска да се свърже отдалечено :(


Титла: Re: Връзка с mysql сървър?
Публикувано от: laskov в Apr 09, 2010, 13:23
А какво стана със --skip-networking ?


Титла: Re: Връзка с mysql сървър?
Публикувано от: Astor в Apr 09, 2010, 15:06
@laskov във файла: /etc/rc.d/rc.mysqld има следния ред:
SKIP="--skip-networking ", когато обаче коментирам този ред mysql не иска да тръгва. Няма го като процес в ps.
В конфигурационния файл /etc/my.cnf има следния ред:
server-id   = 1, който по подразбиране си е на 1. Пояснението към този ред е: #skip-networking. Обаче променяйки стойността на това поле от 1 на 0, все едно и също, не мога да се свържа отдалечено с mysql.
@ jet и niakoi: Пробвах това:
Цитат
GRANT ALL PRIVILEGES ON *.* TO root@'192.168.0.8' IDENTIFIED BY 'Nqkakva_parola';
FLUSH PRIVILEGES;
след това при: SHOW GRANTS; изкарва само това:
Цитат
mysql> show grants;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*CD6BD0A832C846995C07E6B43E259C59EF6EDE85' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Защо няма ред за 'root'@'192.168.0.8'?


Титла: Re: Връзка с mysql сървър?
Публикувано от: VladSun в Apr 09, 2010, 15:25
Защото показваш правата на текущия потребител.
Пробвай:
Код
GeSHi (SQL):
  1. SHOW GRANTS FOR root@'192.168.0.8'
или
Код
GeSHi (SQL):
  1. SELECT * FROM mysql.`user`


Титла: Re: Връзка с mysql сървър?
Публикувано от: laskov в Apr 09, 2010, 15:28
SKIP="--skip-networking ", когато обаче коментирам този ред mysql не иска да тръгва. Няма го като процес в ps.
И каква е грешката в лог файла ?


Титла: Re: Връзка с mysql сървър?
Публикувано от: VladSun в Apr 09, 2010, 15:30
Дай изхода и от:
Код
GeSHi (Bash):
  1. ps afux | grep mysqld


Титла: Re: Връзка с mysql сървър?
Публикувано от: Astor в Apr 12, 2010, 13:50
Здравейте, извинявам се за закъснението с което пиша, но нямах възможност да видя какво става Събота и Неделя.

При коментиран ред: SKIP="--skip-networking " във файлът: /etc/rc.d/rc.mysqld от лога /var/lib/mysql/hostname.err виждам следната грешка при стартирането:
Цитат
100412 12:55:42  mysqld started
100412 12:55:44 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
100412 12:55:44 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
100412 12:55:47  InnoDB: Started; log sequence number 0 43655
100412 12:55:47 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
100412 12:55:47 [ERROR] Do you already have another mysqld server running on port: 3306 ?
100412 12:55:47 [ERROR] Aborting

100412 12:55:47  InnoDB: Starting shutdown...
100412 12:55:50  InnoDB: Shutdown completed; log sequence number 0 43655
100412 12:55:50 [Note] /usr/libexec/mysqld: Shutdown complete

100412 12:55:50  mysqld ended
естествено mysql не се стартира и го няма като процес.

При включено ="--skip-networking се стартира така:
Цитат
100412 13:02:05  mysqld started
100412 13:02:05 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
100412 13:02:05 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
100412 13:02:07  InnoDB: Started; log sequence number 0 43655
100412 13:02:08 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.84'  socket: '/var/run/mysql/mysql.sock'  port: 0  Source distribution
А при ps afux | grep mysqld излиза следното:
Цитат
root      3345  0.0  0.1   2204   624 pts/0    S+   13:46   0:00          \_ grep mysql
root      3254  0.0  0.2   2856  1412 tty1     S    13:02   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid --skip-networking
mysql     3285  0.0  2.5  93020 12880 tty1     Sl   13:02   0:01  \_ /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysql/mysql.pid --skip-external-locking --port=3306 --socket=/var/run/mysql/mysql.sock --skip-networking

Пробвах на ДРУГ компютър със Slackware и същия mysql: при коментар на опцията --skip-networking и при GRANT ALL PRIVILEGES ON *.* TO 'user'@'IP_Adress' IDENTIFIED BY PASSWORD Query Browsera си се свърза без проблем.


Титла: Re: Връзка с mysql сървър?
Публикувано от: VladSun в Apr 12, 2010, 13:55
Изходът от ifconfig?


Титла: Re: Връзка с mysql сървър?
Публикувано от: VladSun в Apr 12, 2010, 13:57
Побвай с:
Код:
bind-address		= 0.0.0.0

дали работи


Титла: Re: Връзка с mysql сървър?
Публикувано от: Astor в Apr 12, 2010, 15:53
Благодаря за отговора VladSun
с bind-address = 0.0.0.0 пак същата работа , не иска да се свързва :(

Цитат
#ifconfig
eth0    Link encap:Ethernet  HWaddr 00:0c:29:f7:3e:77 
          inet addr:192.168.0.223  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef7:3e77/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11826 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1361 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:899880 (878.7 KiB)  TX bytes:230242 (224.8 KiB)
          Interrupt:19 Base address:0x2000

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


Титла: Re: Връзка с mysql сървър?
Публикувано от: laskov в Apr 12, 2010, 16:04
Виж сега, в конфиг файла имаш
Цитат
bind-address=192.168.0.8
, а машината ти е с адрес 192.168.0.223
Затова не тръгва. Или направи машината с адрес 0.8, или махни това "bind-address=192.168.0.8" от конфига.
Със скипнет... тръгва, но можеш да го ползваш само локално - на същата машина, не и през мрежата.


Титла: Re: Връзка с mysql сървър?
Публикувано от: Astor в Apr 12, 2010, 16:22
Благодаря ви на всички за отговорите, най-после стана! Грешката е била в bind-address полето в /my.cnf файла! Когато оправих bind-address=192.168.0.223, отново нямаше връзка със сървъра. Но трябваше заедно с това да коментирам и реда SKIP="--skip-networking " /etc/rc.d/rc.mysqld, след което след рестарт на сървъра не даде никаква грешка и връзката се осъществи!