মাইএসকিএলডি.সকটিতে কী থাকতে হবে, আমার কাছে কেন নেই?


22

কেউ কি জানেন যে /var/run/mysqld/mysqld.sockআমি মাইএসকিউএল 5.1 ইনস্টল করার সময় (বা পুনরায় ইনস্টল করা) কেন আমার সকেট ফাইলটি আমার কম্পিউটারে থাকবে না?

এই মুহুর্তে, আমি যখন মাইএসকিএলডি দিয়ে একটি সার্ভার শুরু করার চেষ্টা করি তখন আমার মতো ত্রুটি পাওয়া যায় Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect, তবে সেই নামটি দিয়ে একটি ফাঁকা ফাইল তৈরি করা (উবুন্টু ফোরামগুলিতে প্রস্তাবিত হিসাবে) ব্যর্থ হয়েছিল।

আমি কিছুক্ষণ আগে ন্যাটিতে আপগ্রেড না হওয়া পর্যন্ত আমার মাইএসকিএল এবং পোস্টগ্রিস উভয়ই জরিমানা পরিবেশন করেছে; আমি কী ঘটছে তা নির্ধারণের চেষ্টা করে উভয় ডাটাবেস ধরে হাঁটতে ঘন্টা ব্যয় করেছি। আমি পোস্টগ্র্যাগগুলি ছেড়ে দিতে পারি, তবে আমি মাইএসকিএল-এর একটি অনুলিপি ছাড়া কাজ করতে পারি না।

সবচেয়ে অদ্ভুত অংশ: আমি কুবুন্টু ব্যবহার করি, এবং আমার বোধগম্যতা হল যে কে-ডি-ই ব্যবহারকারীর অনুমতি ইত্যাদি সংরক্ষণের জন্য মাইএসকিএল ব্যবহার করে; আমি কোনও অদ্ভুত অনুমতি সংক্রান্ত সমস্যা ভোগ করছি না; আমি কি এটি বোঝাতে পারি যে (কোনওভাবে?) মাইএসকিউএল আসলে কাজ করছে?

হয়তো এই সকেট ফাইলগুলি নেটিয় ভিন্ন জায়গায় বাস করে? কেবলমাত্র ওএস তাজা পুনরায় ইনস্টল করা সহজ হবে? এই মুহুর্তে, আমি এমন কোনও পরামর্শের জন্য উন্মুক্ত যা আমার সময় নষ্ট করা বন্ধ করবে।


আপনাকে প্রথমে mysql সার্ভারটি শুরু /var/run/mysqld/mysqld.sockকরতে হবে এবং তারপরে সেই ফাইলটি তৈরি করা হবে। @ পল যা বলেছিল সেভাবে, আপনাকে সেই জায়গাতে রাখা কোনও ফাইল সরিয়ে ফেলতে হবে।
ইভান হু

উত্তর:


18

সকেট ফাইলটিতে আসলে ডেটা থাকে না, এটি তা পরিবহন করে .. এটি একটি বিশেষ, অস্বাভাবিক ধরণের ফাইল যা বিশেষ সিস্টেম কল / কমান্ডের সাহায্যে তৈরি। এটি কোনও সাধারণ ফাইল নয়।

এটি কোনও পাইপের মতো সার্ভার এবং ক্লায়েন্টরা অনুরোধ এবং ডেটা সংযোগ করতে এবং বিনিময় করতে ব্যবহার করতে পারে। এছাড়াও, এটি কেবল স্থানীয়ভাবে ব্যবহৃত হয়। এর তাত্পর্যটি কেবল ফাইল সিস্টেমে একটি সম্মত রেন্ডোজভাস অবস্থান হিসাবে।

একটি সরল পুরানো ফাইল তৈরি করা এবং that স্থানে এটিকে স্থাপন করা আসলে এটি তৈরি করা সার্ভারের সাথে হস্তক্ষেপ করতে পারে ... এবং এর ফলে স্থানীয় ক্লায়েন্টরা সার্ভারের সাথে সংযোগ স্থাপন থেকে বিরত থাকে।

আমার প্রস্তাবটি হ'ল আপনি যে কোনও ফাইল লোকেশনে রেখেছেন remove বিশেষ সকেট ফাইলটি সার্ভার দ্বারা তৈরি করা হয়েছে।


1
সকেট ফাইলগুলির ব্যাখ্যার জন্য ধন্যবাদ, এবং খারাপ শব্দযুক্ত প্রশ্নের জন্য দুঃখিত: আমার মূল সমস্যাটি ছিল যে সকেট ফাইলটি অনুপস্থিত ছিল - ত্রুটি Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
মাইএসকিএল

তবে কীভাবে এটি তৈরি হয়? কারণ এখনও আমার কাছে তা নেই ..: -কোন ধারণা?
jpganz18

আপনার সম্ভবত একটি মাইএসকিএল ক্লায়েন্ট রয়েছে যেটি সকেটটি সেই জায়গায় থাকবে বলে আশা করে তবে সার্ভারটি এটি তৈরি করে না (বা সার্ভারটি চলছে না) যদি সার্ভারটি চলমান থাকে, / tmp দেখুন বা সন্ধান করুন বা চিহ্নিত করতে ব্যবহার করুন সকেট ফাইলটি সন্ধান করুন, তারপরে
মাইএসকিএল

20

আপনি উল্লেখ করার পরে host=localhost, mysql ক্লায়েন্টটি ইউনিক্স নামের পাইপ ব্যবহার করে মাইএসকিএল সার্ভারে লগইন করার চেষ্টা করবে যার জন্য একটি .sockফাইল প্রয়োজন ।

হোস্ট = 127.0.0.1 উল্লেখ করে এটি বাইপাস করা যায়। এটি সার্ভারের সাথে সংযোগ স্থাপনের জন্য মাইএসকিএল ক্লায়েন্টকে টিসিপি ব্যবহার করবে।

মাইএসকিউএল এর ডকুমেন্টেশন থেকে নেওয়া :

mysql --host=127.0.0.1 --port=3306 --user=your_uname --password=your_pass

এটি আসলে একটি উজ্জ্বল (এবং অনেক প্রয়োজনীয়) উত্তর কারণ, historতিহাসিকভাবে বলতে গেলে, আমি যে mysql.sockমাইএসকিউএল এর সাথে কাজ করেছি তার প্রতিটি সংস্করণে কোনও কারণ ছাড়াই অদৃশ্য হয়ে থাকতে দেখেছি (পিছনে 4.0)) যখন এটি হয়, আমি ঠিক এইভাবে লগইন করি তবে এর --protocol=tcpপরিবর্তে আমি ব্যবহার করি --port। আপনি যখন মাইএসকিএল বন্ধ করবেন তখন পরিষেবাটি সকেট ফাইলটির সন্ধান করে। সুতরাং, দৌড়ানো service mysql stopব্যর্থ হবে। অনুপস্থিত সকেট ফাইলের মাথা ব্যথা পেতে, আমি দৌড়াতে চাই mysqladmin -h127.0.0.1 --protocol=tcp -uroot -p shutdown। ওহ, বিটিডাব্লু, +1 !!!
রোল্যান্ডোমাইএসকিউএলডিবিএ

ধন্যবাদ. এটি অনলাইনে যে কোনও জায়গায় আমার প্রথম উত্তর ছিল :) এবং হ্যাঁ। টিসিপি ব্যবহারের বিকল্প পদ্ধতি হ'ল - প্রোটোকল = টিসিপি নির্দিষ্ট করে।
স্ক্রোকট

14

সকেট ডেটা স্টোরেজ নয়, পড়া এবং লেখার মাধ্যমে ডেটা ট্রান্সমিশনের জন্য ব্যবহৃত একটি বিশেষ সিউডো-ফাইল।

পরিষেবাটি বন্ধ হয়ে গেলে পরিষেবাটি চালু করা এবং সরানো হলে সকেট ফাইল তৈরি করা হয়। ফাইলটির অবস্থানটি এর /etc/my.cnfমতো সংজ্ঞায়িত করা হয় :

[mysqld]
socket=/var/run/mysql/mysql.sock

8

আমার ক্ষেত্রে, চলমান mysqld_safeএকটি নতুন mysqld.sockফাইল তৈরি করেছে।

$ cd /etc/init.d/
$ mysqld_safe

আপনি সম্ভবত প্রম্পট ফিরে পাবেন না, কিন্তু আপনি যদি আপনার সেশনটি পুনরায় চালু করেন, তবে মাইএসকিএল.ডসক ফাইলটি কোথাও থাকবে। এটি দিয়ে সন্ধান করুন

$ sudo find / -type s | grep mysqld.sock

2

নিখোঁজ mysqld.sock নিয়ে আমারও একই সমস্যা ছিল। আমি যে ডিরেক্টরিতে মাইএসকিএল ধারণ করেছিলাম সেখানে গিয়েছিলাম /usr/bin। তারপরে আমি আদেশ জারি করেছিলাম

mysql mysql --host=localhost --password=whatever --port=3306

ডাবল মাইএসকিএল টাইপো নয় বরং মাইএসকিএল একটি ডাটাবেস যা সর্বদা একটি নতুন মাইএসকিউএল ইনস্টলেশনতে থাকবে in আমি জানি না --host, --passwordবা --portপ্রয়োজন হয় কিন্তু যেহেতু এটা আমার জন্য কাজ আমি তাদের অন্তর্ভুক্ত করছি এই পরামিতি ব্যবহার করে। মাইএসকিউএল একবার আসার পরে আমি ব্যবহারকারীর টেবিলের মধ্যে রুটের পাসওয়ার্ড সেট করেছিলাম। একবার মাইএসকিউএল আসার পরে অনুপস্থিত সকেট ফাইল তৈরি হয়েছিল। আমি আশা করি যেহেতু আমি কয়েকদিন ধরে লড়াই করেছিলাম এটি কারও পক্ষে সহায়তা করবে।


1

আপনি যদি এনজিএনএক্স পিএইচপি-ফাস্টসিজি ব্যবহার করছেন এবং আপনি এনজিএনএক্স কনফিগারেশন ফাইলে আপনার ভার্চুয়াল হোস্ট কনফিগারেশনটি দেখার চেয়ে 502 টি খারাপ গেটওয়ে ত্রুটি পেয়েছেন । আপনি সেট বা সংশোধন করতে হবেfastcgi_pass প্যারামিটারটিfastcgi_pass n nginx এবং php CGI এর মধ্যে সকেট সংযোগ সেট করতে পরিবর্তনশীল।

ইস্যুর আরেকটি বিষয় হ'ল বাইনারি স্টার্টার স্ক্রিপ্টটি নিম্নলিখিত এন্ট্রিগুলি (গুরুত্বপূর্ণ) টি দিয়ে মিস করতে পারে: nano /usr/bin/php-fastcgi

SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid

আমার স্টার্টার স্ক্রিপ্ট / ইউএসআর / বিন / পিএইচপি-ফাস্টসিগির সম্পূর্ণ সামগ্রী:

#!/bin/bash

FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi

/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.