আমি যখন মাইএসকিএল-তে সংযোগ দেওয়ার চেষ্টা করি তখন আমি নিম্নলিখিত ত্রুটিটি পাচ্ছি:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
এই ত্রুটির কোনও সমাধান আছে? এর পিছনে কারণ কী হতে পারে?
আমি যখন মাইএসকিএল-তে সংযোগ দেওয়ার চেষ্টা করি তখন আমি নিম্নলিখিত ত্রুটিটি পাচ্ছি:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
এই ত্রুটির কোনও সমাধান আছে? এর পিছনে কারণ কী হতে পারে?
উত্তর:
আপনি কি "লোকালহোস্ট" বা "127.0.0.1" এর সাথে সংযোগ করছেন? আমি লক্ষ্য করেছি যে আপনি যখন "লোকালহোস্ট" এ সংযোগ করেন তখন সকেট সংযোজকটি ব্যবহৃত হয়, তবে আপনি যখন "127.0.0.1" এ সংযোগ করেন তখন টিসিপি / আইপি সংযোগকারী ব্যবহৃত হয়। সকেট সংযোগকারী সক্ষম / কাজ করা না থাকলে আপনি "127.0.0.1" ব্যবহার করে দেখতে পারেন।
/etc/hosts
আমার Docker কন্টেইনারে ফাইল আমাকে মাইএসকিউএল হোস্ট-নেম হতে দেখিয়েছেন mysql
। আমার সংযুক্ত কনফিগারেশনে এই একই হোস্টনামটি ব্যবহার করা সমস্যার সমাধান করেছে।
আপনার মাইএসকিএল পরিষেবা চালু রয়েছে তা নিশ্চিত করুন
service mysqld start
তারপরে, নিম্নলিখিতগুলির মধ্যে একটি ব্যবহার করে দেখুন:
(যদি আপনি মাইএসকিএল এর জন্য পাসওয়ার্ড সেট না করে থাকেন)
mysql -u root
আপনি যদি ইতিমধ্যে পাসওয়ার্ড সেট করে রেখেছেন
mysql -u root -p
service mariadb start
কারণ mariadb.org/debian-9-released-mariadb-mysql-variant
যদি আপনার ফাইল my.cnf (সাধারণত ইত্যাদি ফোল্ডারে থাকে) সঠিকভাবে কনফিগার করা থাকে
socket=/var/lib/mysql/mysql.sock
নিম্নলিখিত কমান্ডটি দিয়ে mysql চলছে কিনা তা আপনি পরীক্ষা করতে পারেন:
mysqladmin -u root -p status
আপনার অনুমতিটি মাইএসকিএল ফোল্ডারে পরিবর্তন করার চেষ্টা করুন। আপনি যদি স্থানীয়ভাবে কাজ করে থাকেন তবে আপনি চেষ্টা করতে পারেন:
sudo chmod -R 777 /var/lib/mysql/
এটা আমার জন্য এটি সমাধান
মাইএসকিউএল সার্ভার চলছে না, বা এটি এর সকেট ফাইলের অবস্থান নয় (my.cnf দেখুন)।
সম্ভবত mysql.sock
উপস্থিত নেই /var/lib/mysql/
।
যদি আপনি একই ফাইলটি অন্য কোনও স্থানে খুঁজে পান তবে এটি সিমিলিংক করুন:
প্রাক্তন হিসাবে: আমি এটি আছে /data/mysql_datadir/mysql.sock
ব্যবহারকারীকে মাইএসকিএলে স্যুইচ করুন এবং নীচে বর্ণিত হিসাবে কার্যকর করুন:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
এটি আমার সমস্যার সমাধান করেছে
আপনি যদি সাম্প্রতিক আরএইচইএল এ থাকেন তবে আপনাকে মাইএসকিএল ডিবির পরিবর্তে মারিয়্যাডবি (একটি মুক্ত উত্স মাইএসকিএল ডিবি) শুরু করতে হবে:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
তারপরে আপনার সাধারণ ফ্যাশনে মাইএসকিএল অ্যাক্সেস করতে সক্ষম হওয়া উচিত:
mysql -u root -p
mariadb-server
এবং কিছু ডিফল্ট অনিরাপদ সেটিংস সাফ mariadb
করতে চালাতে ভুলবেন না mysql_secure_installation
।
আমার ক্ষেত্রে আমি অন্য কোনো স্থানে ভিতরে সকেট ফাইল সরানো হয়েছে /etc/my.cnf
থেকে /var/lib/mysql/mysql.sock
থেকে/tmp/mysql.sock
মাইএসকিএলডি পরিষেবাটি পুনরায় চালু করার পরেও আমি সংযোগ দেওয়ার চেষ্টা করার পরে আমি ত্রুটি বার্তাটি দেখতে পাচ্ছি।
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
সমস্যাটি ক্লায়েন্টকে কনফিগার করা হয়েছে এমনভাবে। চলমান ডায়াগনস্টিক্স আসলে সঠিক সকেটের পাথটি প্রদর্শন করবে। যেমনps aux | grep mysqld
কাজ করে:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
কাজ করে না:
mysql -uroot -p
mysql -uroot -p -hlocalhost
আপনি মাইএসকিএল কনফিগারেশনের বিভাগের অধীনে একই সকেট লাইন যুক্ত করে এই সমস্যাটি সমাধান করতে পারেন ।[client]
শুধু সম্পাদনা /etc/my.cnf
করুন নিম্নলিখিত লাইন যুক্ত করুনmy.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Mysql পুনরায় আরম্ভ করুন এবং আবার সংযোগ করুন
mysql -u ইউজার-পি পাসওয়ার্ড ডাটাবেস -h হোস্ট;
আপনার মাইএসকিএলড পরিষেবাটি চলছে কিনা তা পরীক্ষা করুন, না চালানো থাকলে পরিষেবাটি শুরু করুন।
যদি আপনার সমস্যার সমাধান না /etc/my.cnf
হয় তবে নিম্নলিখিত হিসাবে সন্ধান করুন এবং সংশোধন করুন, যেখানে আপনি একটি লাইন শুরু করে দেখছেন socket
। এই আপডেটটি করার আগে সেই ফাইলটির একটি ব্যাকআপ নিন।
socket=/var/lib/mysql/mysql.sock
পরিবর্তন
socket=/opt/lampp/var/mysql/mysql.sock -u root
মাইএসকিউএলের একটি সম্প্রদায় বিকশিত মারিয়াডিবি বহু বিতরণে মাইএসকিউএল এর ডিফল্ট বাস্তবায়ন হয়ে উঠেছে।
সুতরাং প্রথমে আপনার শুরু করা উচিত,
$ sudo systemctl start mariadb
যদি এটির পরিবর্তে চেষ্টা করে ব্যর্থ হয়,
$ sudo systemctl start mysqld
তারপরে মাইএসকিএল শুরু করতে,
$ mysql -u root -p
আজকের হিসাবে, ফেডোরায় প্যাকেজের নাম দেওয়া হয়েছে mariadb
এবং উবুন্টুতে একে বলা হয় mariadb-server
।
সুতরাং এটি ইনস্টল করতে হতে পারে যদি এটি ইতিমধ্যে আপনার সিস্টেমে ইনস্টল করা না থাকে।
আপনার পর্যাপ্ত জায়গা বাকি আছে তা নিশ্চিত করুন /var
। যদি মাইএসকিএল রাক্ষস ড্রাইভে অতিরিক্ত তথ্য লিখতে সক্ষম না হয় তবে মাইএসকিএল সার্ভারটি আরম্ভ হবে না এবং এটি ত্রুটির দিকে পরিচালিত করেCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
ব্যবহার বিবেচনা করুন
expire_logs_days = 10
max_binlog_size = 100M
এটি আপনাকে ডিস্কের ব্যবহার কম রাখতে সহায়তা করবে।
innodb_buffer_pool_size
হয়েছিল my.cnf
। এটিকে একটি ছোট মান হিসাবে সেট করা innodb_buffer_pool_size = 50M
এই অনুমানটিকে ত্যাগ করার জন্য একটি ভাল পরীক্ষা;)
আমার জন্য যা কাজ করেছে তা এখানে:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
অন্য কোনও mysql পরিষেবা চালু আছে কিনা তা দয়া করে পরীক্ষা করে দেখুন।
আপনি সার্ভারটি শুরু করেছেন তা নিশ্চিত করুন:
mysql.server start
তারপরে রুট ব্যবহারকারীর সাথে সংযোগ দিন:
mysql -uroot
যদি আপনার মাইএসকিএল আগে কাজ করে এবং হঠাৎ সার্ভারটিকে "রিবুট" করে বন্ধ করে দেয়।
আমার সেন্টস ভিপিএস-> এ এই সমস্যার মুখোমুখি হয়েছিল-
ক্রমাগত পাচ্ছিল
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
সমস্ত কৌশল চেষ্টা করে অবশেষে সার্ভারটি পুনরায় চালু করার ফলে সমস্যাগুলি সংশোধন হয়েছে ->
shutdown -r now
আশাকরি এটা সাহায্য করবে !!
আপনি যদি / var / lib / mysql এ ফাইলগুলি পরিবর্তন করেন [যেমন অনুলিপি করুন বা প্রতিস্থাপন করুন], আপনার অবশ্যই ফাইলের মালিককে মাইএসকিএলে সেট করতে হবে যদি মারিয়্যাডবি। সার্ভিস পুনঃসূচনাটি ত্রুটিযুক্ত থাকে তবে
ডাউন -আর মাইএসকিএল: মাইএসকিএল / ভার / লিবিব / মাইএসকিএল / *
chmod -R 700 / var / lib / mysql / *
প্রথমে "পরিষেবা mysqld শুরু" প্রবেশ করুন এবং লগইন করুন
দয়া করে নিশ্চিত করুন যে আপনি মাইএসকিউএল সার্ভারটি সঠিকভাবে ইনস্টল করেছেন, আমি এই ত্রুটিটি অনেকবার পেয়েছি এবং আমি মনে করি এটি সকেট থেকে ডিবাগ করা জটিল, আমি বোঝাতে চাইছি এটি পুনরায় ইনস্টল করা আরও সহজ।
আপনি যদি সেন্টোস 7 ব্যবহার করছেন তবে এটি ইনস্টল করার সঠিক উপায় এখানে রয়েছে:
প্রথমত, মাইএসকিএল সম্প্রদায়ের উত্স যুক্ত করুন
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
তারপরে আপনি এটি ইনস্টল করতে পারেন yum install mysql-community-server
এটি সিস্টেমকটিএল দিয়ে শুরু করুন: systemctl start mysqld
আমার সমস্যাটি হ'ল আমি সফলভাবে মাইএসকিএল ইনস্টল করেছি এবং এটি দুর্দান্ত কাজ করেছে।
কিন্তু একদিন, একই ত্রুটি ঘটেছে।
'/Var/lib/mysql/mysql.sock' (2) এর মাধ্যমে স্থানীয় মাইএসকিউএল সার্ভারের সাথে সংযুক্ত হতে পারে না
এবং কোনও mysql.sock ফাইল বিদ্যমান নেই।
এই সমাধানটি আমার সমস্যার সমাধান করে এবং মাইএসকিএল আবার শুরু হয়:
রুট হিসাবে লগ ইন করুন:
sudo su -
চালান:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
রুট হিসাবে পরীক্ষা:
mysql -u root -p
mysql এখন আপ এবং চলমান করা উচিত।
আমি আশা করি এটি অন্য কাউকেও সহায়তা করতে পারে।
নোট করুন যে যখন মাইএসকিএল my.cnf ফাইল থেকে সকেটফিলের অবস্থানের তথ্য পড়ছে, তখন mysql_secure_installation প্রোগ্রামটি ঠিক সময়ে এটি সঠিকভাবে করতে পারে না বলে মনে হয়।
সুতরাং আপনি যদি আমার মতো হয়ে থাকেন এবং ইনস্টলেশনের সময়ে জিনিসগুলি বদলে ফেলতে পারেন তবে আপনি এমন পরিস্থিতিতে পড়তে পারেন যেখানে আপনি মাইএসকিএল দিয়ে ডাটাবেসে কানেক্ট করতে পারেন তবে জিনিসটি সুরক্ষিত করা যায় না (যাইহোক স্ক্রিপ্টটি ব্যবহার না করে)।
স্রেডি থেকে দেওয়া পরামর্শটি ঠিকঠাক করার জন্য: স্ক্রিপ্টটি সকেটটি যেখানে আসবে তা বাস্তবে যেখানে প্রত্যাশা করবে সেখান থেকে একটি সফটলিঙ্ক তৈরি করুন। উদাহরণ:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(আমি সকেটের জন্য ডিফল্ট অবস্থান হিসাবে / টিএমপি / ব্যবহার করি)
এটি নিম্নলিখিত পরিবর্তনগুলির সাথে আমার পক্ষে কাজ করেছে
সকেটের জন্য যে কোনও পথের কথা [মাইএসকিএলডি] এবং মাই সিএনএফ-তে [ক্লায়েন্ট] তে একইভাবে উল্লেখ করা হয়েছে এবং মাইএসকিএল পুনরায় চালু করুন
[mysqld] সকেট = / var / lib / mysql / mysql.sock
[ক্লায়েন্ট] সকেট = / var / lib / mysql / mysql.sock
এই ত্রুটিটি পুনরুত্পাদন করার একটি উপায়: আপনি যদি কোনও বিদেশী সার্ভারের সাথে সংযোগ স্থাপন করতে চেয়েছিলেন তবে পরিবর্তে অস্তিত্বহীন স্থানীয় সাথে সংযোগ স্থাপন করতে চান:
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
সুতরাং আপনাকে এইভাবে হোস্টটি নির্দিষ্ট করতে হবে:
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
এটি একটি নির্বোধ পরামর্শ হতে পারে তবে 100% নিশ্চিত করুন যে আপনার ডিবি এখনও লোকালহোস্টে হোস্ট করা আছে। উদাহরণস্বরূপ, যদি কোনও নেটওয়ার্ক অ্যাডমিন আমাজন ডিবি হোস্টিং চয়ন করে (বা এতে পরিবর্তিত হয়) তবে আপনার পরিবর্তে সেই হোস্টনামটি লাগবে!
আমার ক্ষেত্রে, আমি একটি নতুন ডাটাবেস আমদানি করছিলাম, এবং এর পরে আমি আবার সংযোগ করতে পারিনি। অবশেষে আমি বুঝতে পারি যে এটি একটি স্থান সমস্যা ছিল।
সুতরাং আপনি সর্বশেষ ডাটাবেস মুছতে পারেন এবং হার্ড ড্রাইভ বা আমি যা করেছি তা প্রসারিত করতে, আমার ভার্চুয়াল মেশিনের একটি স্ন্যাপশট পুনরুদ্ধার করে।
সেক্ষেত্রে কেউ মনে করেন যে এটি দরকারী
আপনি যদি ডিস্কের জায়গার বাইরে চলে যান তবে এটি একটি সমস্যা। সমাধানটি এইচডিডি থেকে কিছু স্থান মুক্ত করা।
ব্যাখ্যা পেতে দয়া করে আরও পড়ুন:
আপনি যদি লিনাক্সে মাইএসকিউএল চালাচ্ছেন তবে কমান্ড ডিস্ক ফ্রি সহ এইচডিডি মুক্ত স্থানটি পরীক্ষা করুন:
df
যদি আপনি এরকম কিছু পান:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
তাহলে এই সমস্যা এবং এখন আপনার সমাধান আছে!
যেহেতু mysql.sock মাইএসকিএল ফোল্ডারে তৈরি করা চায় যা প্রায় সবসময় মূল ফোল্ডারের নীচে থাকে তা স্থান অর্জনের কারণে এটি অর্জন করতে পারেনি।
আপনি যদি সাময়িকভাবে মাইএসকিএল ডিরেক্টরিতে এলএস কমান্ডটি দেন (ওপেনসুএসই 11.1-এ / var / lib / mysql এ থাকে) আপনি এরকম কিছু পাবেন:
hostname:/var/lib/mysql #
.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
Mysql.sock ফাইলটি প্রায়শই উপস্থিত হয় এবং অদৃশ্য হয়ে যায় (ফোল্ডারে mysql.sock ফাইলের সাথে কোনও উদাহরণ হিট করতে আপনাকে এলএস দিয়ে বরাদ্দ দেওয়ার চেষ্টা করতে হবে)।
পর্যাপ্ত ডিস্ক স্থান না থাকার কারণে এটি ঘটেছে।
আমি আশা করি আমি কিছু লোককে সাহায্য করব !!!! ধন্যবাদ!