When I'm gonna install packages or software I can see client | server versions. What does it mean actually? For example:

apt-get install xxxx-client
apt-get install xxxx-server

What are the difference between these? How can we categorize when we need to install an application or package? Let's say:

If I want to install nginx, I simply install by typing apt-get install nginx, so there we don't have any confusion.

When I’m looking for MySQL, how to choose which edition should I install? I'm so confused with client and server.

  • 7
    How can you be confused? If you want to access content via that application you need the client, if you want to provide to other systems access to some content you own you need a server. If you don't know this chances are you shouldn't install either one because you aren't going to make them work by yourself.
    – Bakuriu
    Commented Dec 11, 2019 at 18:41
  • @Bakuriu thanks for the clarification yeah I got 75% what I exactly need . If I wanna provide our service to others that should be server app . We can access it through remote or ssh whatever. In client based app we cannot provide a service to others to join or cannot access via remote but we still get a service am I near to the right answer ?
    – soldier
    Commented Dec 12, 2019 at 3:30
  • I'm assuming one provides the client and one provides the server? Commented Dec 12, 2019 at 6:37
  • 1
    Arguably, installing nginx client with apt-get install firefox is also confusing. Commented Dec 12, 2019 at 12:27

4 Answers 4


Almost any application can be made using a distributed client-server model:

  • server provides a resource1 or service,
  • client uses the resource or service.

In some applications, both the server and client are made by the same producer and are branded as parts of one product – this is the case of OpenSSH or MySQL.

However, the protocol between server and client(s) is what really matters. The power2 of the client-server model is that any software implementing the protocol can use it (as both a client or server, see below). Why the producers of Nginx (or Apache) did not provide a client for their software? Because their products are web servers and there have been lots of clients (called web browsers in this case) available already, like Firefox, Chrome, etc.

Back to the first group… Although an “official” client for OpenSSH is provided, you can use another one, like PuTTY, right? And there are also alternative MySQL server implementations (MariaDB and Percona Server) which collaborate with the common MySQL clients which, again, are not limited to the command-line MySQL client provided by the package mysql-client.

1 The resource can be a database (*SQL), webpages or even a console (keyboard, mouse, and monitor) in the case of the X server.

2 Another advantage is that these parts can be run on different machines – but mostly also the same one, just as their deployer needs.

  • One very common situation is telnet. I do not want a telnetd (note the d at the end of the name) service running on any of the servers I administer, but I absolutely want the telnet client on them, because it's indispensable for troubleshooting. It can be used to connect to many services to confirm network connectivity (and lack of firewall block), the fact the service is actually listening on the specified port, and in many cases the current version number of the service daemon and/or library(ies) it uses. Commented Dec 11, 2019 at 19:43

Some programs are available in server mode, others as client only.

nginx is a server only application so the server/client difference makes no sense (to me anyway).

Openssh however has both, ie.

client (allowing login to a remote box or server), or

server (allowing other remote clients to login to itself, the server).

  • 2
    I attend an interview today so they asked me the same question but how can I say those differences can't make any sense . I should have strong answer and a description .
    – soldier
    Commented Dec 11, 2019 at 8:08
  • @soldier Are you asking what the difference is between the MySQL client and the MySQL server? Commented Dec 11, 2019 at 16:49
  • @soldier - See the other answer by Melebius above for a more in-depth description.
    – Cinderhaze
    Commented Dec 11, 2019 at 17:23
  • Nginx is a server for the HTTP and HTTPS protocols. Any browser is a client, from curl and wget to firefox and safari. Commented Dec 11, 2019 at 20:23
  • 6
    @soldier If you can’t answer that question, I would assume you won’t be getting that job.
    – Darren
    Commented Dec 11, 2019 at 22:09

If I want to install nginx, I simply install by typing apt-get install nginx, so there we don't have any confusion.

Correct, nginx is a web server, among other things. It serves content to any client that is set up to communicate with it. There are already a ton of well designed clients for various purposes, so nginx did not need to create their own.

When I’m looking for MySQL, how to choose which edition should I install?

The server is the database, it holds all the databases and tables and data. It also serves the data to any clients that know how to communicate with it.

The client connects to the database. It can be used for general administration tasks or to perform queries or other functions on data remotely.

If you want an analogy, you can think of it as a store. A store (server) provides a service to the customers, it allows them to exchange money for goods. Customers (clients) come in and can buy stuff in the store. There are many different types of customers want to do different things and are interested in different problems.


I'll try to explain it in this way:

A "server" provides a service to other programs or computers. For example: nginx and Apache are web servers; MySQL and PostgreSQL are database servers.

A "client" talks to the server using a defined protocol -- HTTP or HTTPS for web servers; MySQL and PostgreSQL have their own, specific, protocols (MySQL's is documented here).

When you want to access a server, you need the client. In the case of, e.g., mysql, there are various implementations of the client side of the protocol -- in Java, PHP, etc.. There's also a MySQL-provided interactive client.

But you don't want to install the whole of the server just to get the client: the server is usually larger than the client; but, more importantly: don't install things you don't need -- they might have security holes, and they need to be kept up to date.

So: in Ubuntu (and most other Linux distributions), the server and client are in separate packages.

  • Thanks for the share
    – soldier
    Commented Dec 13, 2019 at 3:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .