#JavaInspires
Hi Guys,
Welcome to Java Inspires.
In this post, we will see how to install mysql server in Ubuntu from terminal.
Here, I'll provide list of commands and full log.
Steps:
1, Check for mysql availability.
$ mysql
$ mysql
2, Update package index.
$ sudo apt update
3, Upgrade the system packages.
$ sudo apt upgrade
$ sudo apt upgrade
4, Configure MySQL PPA (add to system package list)
$ wget -c https://repo.mysql.com/mysql-apt-config_0.8.9-1_all.deb
$ sudo dpkg -i mysql-apt-config_0.8.9-1_all.deb
5, Install MySQL.
$ sudo apt-get install mysql-server
this will prompt for root user password.
6, Adjust security to MySQL server.
$ sudo mysql_secure_installation
this will prompt some security options like
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
7, Check whether the MySQL server is up and running or not.
$ sudo systemctl status mysql
8, Enable auto start at system startup.
$ sudo systemctl enable mysql
9, Connect to MySQL Server.
$ sudo mysql -u root -p
this will prompt for password(provide your root password which we configured in step5.
Thats it .. we are ready with MySQL in our Ubuntu machine. You could see mysql> .. means we are with MySQL. Now, you can run any mysql quires.
Here is the full log...
developer@developer:~$ mysql Command 'mysql' not found, but can be installed with: sudo apt install mysql-client-core-8.0 # version 8.0.25-0ubuntu0.20.04.1, or sudo apt install mariadb-client-core-10.3 # version 1:10.3.29-0ubuntu0.20.04.1 developer@developer:~$ mysql-server mysql-server: command not found developer@developer:~$ sudo apt update [sudo] password for developer: Hit:1 http://dl.google.com/linux/chrome/deb stable InRelease Hit:2 http://packages.microsoft.com/repos/code stable InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu focal InRelease Get:4 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] Get:5 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] Get:6 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB] Fetched 328 kB in 2s (140 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 1 package can be upgraded. Run 'apt list --upgradable' to see it. developer@developer:~$ sudo apt upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages were automatically installed and are no longer required: libboost-program-options1.71.0 libgoogle-perftools4 libpcrecpp0v5 libtcmalloc-minimal4 Use 'sudo apt autoremove' to remove them. The following packages will be upgraded: ubuntu-advantage-tools 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 773 kB of archives. After this operation, 2,331 kB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 ubuntu-advantage-tools amd64 27.0.2~20.04.1 [773 kB] Fetched 773 kB in 1s (1,449 kB/s) Preconfiguring packages ... (Reading database ... 204760 files and directories currently installed.) Preparing to unpack .../ubuntu-advantage-tools_27.0.2~20.04.1_amd64.deb ... Unpacking ubuntu-advantage-tools (27.0.2~20.04.1) over (20.3) ... Setting up ubuntu-advantage-tools (27.0.2~20.04.1) ... Installing new version of config file /etc/ubuntu-advantage/uaclient.conf ... Created symlink /etc/systemd/system/multi-user.target.wants/ua-reboot-cmds.service → /lib/sy stemd/system/ua-reboot-cmds.service. Created symlink /etc/systemd/system/timers.target.wants/ua-messaging.timer → /lib/systemd/sy stem/ua-messaging.timer. Processing triggers for man-db (2.9.1-1) ... developer@developer:~$ wget -c https://repo.mysql.com/mysql-apt-config_0.8.9-1_all.deb --2021-05-29 07:07:04-- https://repo.mysql.com/mysql-apt-config_0.8.9-1_all.deb Resolving repo.mysql.com (repo.mysql.com)... 49.44.146.86 Connecting to repo.mysql.com (repo.mysql.com)|49.44.146.86|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 35950 (35K) [application/x-debian-package] Saving to: ‘mysql-apt-config_0.8.9-1_all.deb’ mysql-apt-config_0.8.9 100%[============================>] 35.11K --.-KB/s in 0.009s 2021-05-29 07:07:04 (3.98 MB/s) - ‘mysql-apt-config_0.8.9-1_all.deb’ saved [35950/35950] developer@developer:~$ sudo dpkg -i mysql-apt-config_0.8.9-1_all.deb Selecting previously unselected package mysql-apt-config. (Reading database ... 204780 files and directories currently installed.) Preparing to unpack mysql-apt-config_0.8.9-1_all.deb ... Unpacking mysql-apt-config (0.8.9-1) ... Setting up mysql-apt-config (0.8.9-1) ... Warning: apt-key should not be used in scripts (called from postinst maintainerscript of the package mysql-apt-config) OK developer@developer:~$ sudo apt-get install mysql-server Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libboost-program-options1.71.0 libgoogle-perftools4 libpcrecpp0v5 libtcmalloc-minimal4 Use 'sudo apt autoremove' to remove them. The following additional packages will be installed: libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libevent-pthreads-2.1-7 libfcgi-perl libhtml-template-perl libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server-8.0 mysql-server-core-8.0 Suggested packages: libipc-sharedcache-perl mailx tinyca The following NEW packages will be installed: libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libevent-pthreads-2.1-7 libfcgi-perl libhtml-template-perl libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server mysql-server-8.0 mysql-server-core-8.0 0 upgraded, 16 newly installed, 0 to remove and 0 not upgraded. Need to get 31.0 MB of archives. After this operation, 258 MB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 mysql-client-core-8.0 amd64 8.0.25-0ubuntu0.20.04.1 [4,216 kB] Get:2 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 mysql-client-8.0 amd64 8.0.25-0ubuntu0.20.04.1 [22.0 kB] Get:3 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libaio1 amd64 0.3.112-5 [7,184 B] Get:4 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libevent-core-2.1-7 amd64 2.1.11-stable-1 [89.1 kB] Get:5 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libevent-pthreads-2.1-7 amd64 2.1.11-stable-1 [7,372 B] Get:6 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libmecab2 amd64 0.996-10build1 [233 kB] Get:7 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 mysql-server-core-8.0 amd64 8.0.25-0ubuntu0.20.04.1 [18.1 MB] Get:8 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 mysql-server-8.0 amd64 8.0.25-0ubuntu0.20.04.1 [1,282 kB] Get:9 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libcgi-pm-perl all 4.46-1 [186 kB] Get:10 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libfcgi-perl amd64 0.79-1 [33.1 kB] Get:11 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libcgi-fast-perl all 1:2.15-1 [10.5 kB] Get:12 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libhtml-template-perl all 2.97-1 [59.0 kB] Get:13 http://us.archive.ubuntu.com/ubuntu focal/main amd64 mecab-utils amd64 0.996-10build1 [4,912 B] Get:14 http://us.archive.ubuntu.com/ubuntu focal/main amd64 mecab-ipadic all 2.7.0-20070801+main-2.1 [6,714 kB] Get:15 http://us.archive.ubuntu.com/ubuntu focal/main amd64 mecab-ipadic-utf8 all 2.7.0-20070801+main-2.1 [4,380 B] Get:16 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 mysql-server all 8.0.25-0ubuntu0.20.04.1 [9,540 B] Fetched 31.0 MB in 15s (2,118 kB/s) Preconfiguring packages ... Selecting previously unselected package mysql-client-core-8.0. (Reading database ... 204785 files and directories currently installed.) Preparing to unpack .../00-mysql-client-core-8.0_8.0.25-0ubuntu0.20.04.1_amd64.deb ... Unpacking mysql-client-core-8.0 (8.0.25-0ubuntu0.20.04.1) ... Selecting previously unselected package mysql-client-8.0. Preparing to unpack .../01-mysql-client-8.0_8.0.25-0ubuntu0.20.04.1_amd64.deb ... Unpacking mysql-client-8.0 (8.0.25-0ubuntu0.20.04.1) ... Selecting previously unselected package libaio1:amd64. Preparing to unpack .../02-libaio1_0.3.112-5_amd64.deb ... Unpacking libaio1:amd64 (0.3.112-5) ... Selecting previously unselected package libevent-core-2.1-7:amd64. Preparing to unpack .../03-libevent-core-2.1-7_2.1.11-stable-1_amd64.deb ... Unpacking libevent-core-2.1-7:amd64 (2.1.11-stable-1) ... Selecting previously unselected package libevent-pthreads-2.1-7:amd64. Preparing to unpack .../04-libevent-pthreads-2.1-7_2.1.11-stable-1_amd64.deb ... Unpacking libevent-pthreads-2.1-7:amd64 (2.1.11-stable-1) ... Selecting previously unselected package libmecab2:amd64. Preparing to unpack .../05-libmecab2_0.996-10build1_amd64.deb ... Unpacking libmecab2:amd64 (0.996-10build1) ... Selecting previously unselected package mysql-server-core-8.0. Preparing to unpack .../06-mysql-server-core-8.0_8.0.25-0ubuntu0.20.04.1_amd64.deb ... Unpacking mysql-server-core-8.0 (8.0.25-0ubuntu0.20.04.1) ... Selecting previously unselected package mysql-server-8.0. Preparing to unpack .../07-mysql-server-8.0_8.0.25-0ubuntu0.20.04.1_amd64.deb ... Unpacking mysql-server-8.0 (8.0.25-0ubuntu0.20.04.1) ... Selecting previously unselected package libcgi-pm-perl. Preparing to unpack .../08-libcgi-pm-perl_4.46-1_all.deb ... Unpacking libcgi-pm-perl (4.46-1) ... Selecting previously unselected package libfcgi-perl. Preparing to unpack .../09-libfcgi-perl_0.79-1_amd64.deb ... Unpacking libfcgi-perl (0.79-1) ... Selecting previously unselected package libcgi-fast-perl. Preparing to unpack .../10-libcgi-fast-perl_1%3a2.15-1_all.deb ... Unpacking libcgi-fast-perl (1:2.15-1) ... Selecting previously unselected package libhtml-template-perl. Preparing to unpack .../11-libhtml-template-perl_2.97-1_all.deb ... Unpacking libhtml-template-perl (2.97-1) ... Selecting previously unselected package mecab-utils. Preparing to unpack .../12-mecab-utils_0.996-10build1_amd64.deb ... Unpacking mecab-utils (0.996-10build1) ... Selecting previously unselected package mecab-ipadic. Preparing to unpack .../13-mecab-ipadic_2.7.0-20070801+main-2.1_all.deb ... Unpacking mecab-ipadic (2.7.0-20070801+main-2.1) ... Selecting previously unselected package mecab-ipadic-utf8. Preparing to unpack .../14-mecab-ipadic-utf8_2.7.0-20070801+main-2.1_all.deb ... Unpacking mecab-ipadic-utf8 (2.7.0-20070801+main-2.1) ... Selecting previously unselected package mysql-server. Preparing to unpack .../15-mysql-server_8.0.25-0ubuntu0.20.04.1_all.deb ... Unpacking mysql-server (8.0.25-0ubuntu0.20.04.1) ... Setting up libmecab2:amd64 (0.996-10build1) ... Setting up mysql-client-core-8.0 (8.0.25-0ubuntu0.20.04.1) ... Setting up libcgi-pm-perl (4.46-1) ... Setting up libhtml-template-perl (2.97-1) ... Setting up mecab-utils (0.996-10build1) ... Setting up libevent-core-2.1-7:amd64 (2.1.11-stable-1) ... Setting up mysql-client-8.0 (8.0.25-0ubuntu0.20.04.1) ... Setting up libfcgi-perl (0.79-1) ... Setting up libaio1:amd64 (0.3.112-5) ... Setting up libevent-pthreads-2.1-7:amd64 (2.1.11-stable-1) ... Setting up mecab-ipadic (2.7.0-20070801+main-2.1) ... Compiling IPA dictionary for Mecab. This takes long time... reading /usr/share/mecab/dic/ipadic/unk.def ... 40 emitting double-array: 100% |###########################################| /usr/share/mecab/dic/ipadic/model.def is not found. skipped. reading /usr/share/mecab/dic/ipadic/Adnominal.csv ... 135 reading /usr/share/mecab/dic/ipadic/Noun.name.csv ... 34202 reading /usr/share/mecab/dic/ipadic/Others.csv ... 2 reading /usr/share/mecab/dic/ipadic/Auxil.csv ... 199 reading /usr/share/mecab/dic/ipadic/Postp.csv ... 146 reading /usr/share/mecab/dic/ipadic/Noun.adverbal.csv ... 795 reading /usr/share/mecab/dic/ipadic/Noun.adjv.csv ... 3328 reading /usr/share/mecab/dic/ipadic/Noun.org.csv ... 16668 reading /usr/share/mecab/dic/ipadic/Noun.others.csv ... 151 reading /usr/share/mecab/dic/ipadic/Verb.csv ... 130750 reading /usr/share/mecab/dic/ipadic/Noun.csv ... 60477 reading /usr/share/mecab/dic/ipadic/Noun.number.csv ... 42 reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91 reading /usr/share/mecab/dic/ipadic/Noun.demonst.csv ... 120 reading /usr/share/mecab/dic/ipadic/Filler.csv ... 19 reading /usr/share/mecab/dic/ipadic/Noun.verbal.csv ... 12146 reading /usr/share/mecab/dic/ipadic/Prefix.csv ... 221 reading /usr/share/mecab/dic/ipadic/Noun.place.csv ... 72999 reading /usr/share/mecab/dic/ipadic/Interjection.csv ... 252 reading /usr/share/mecab/dic/ipadic/Adj.csv ... 27210 reading /usr/share/mecab/dic/ipadic/Adverb.csv ... 3032 reading /usr/share/mecab/dic/ipadic/Noun.proper.csv ... 27328 reading /usr/share/mecab/dic/ipadic/Symbol.csv ... 208 reading /usr/share/mecab/dic/ipadic/Noun.nai.csv ... 42 reading /usr/share/mecab/dic/ipadic/Conjunction.csv ... 171 reading /usr/share/mecab/dic/ipadic/Suffix.csv ... 1393 emitting double-array: 100% |###########################################| reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316 emitting matrix : 100% |###########################################| done! update-alternatives: using /var/lib/mecab/dic/ipadic to provide /var/lib/mecab/dic/debian (mecab-dictionary) in auto mode Setting up libcgi-fast-perl (1:2.15-1) ... Setting up mysql-server-core-8.0 (8.0.25-0ubuntu0.20.04.1) ... Setting up mecab-ipadic-utf8 (2.7.0-20070801+main-2.1) ... Compiling IPA dictionary for Mecab. This takes long time... reading /usr/share/mecab/dic/ipadic/unk.def ... 40 emitting double-array: 100% |###########################################| /usr/share/mecab/dic/ipadic/model.def is not found. skipped. reading /usr/share/mecab/dic/ipadic/Adnominal.csv ... 135 reading /usr/share/mecab/dic/ipadic/Noun.name.csv ... 34202 reading /usr/share/mecab/dic/ipadic/Others.csv ... 2 reading /usr/share/mecab/dic/ipadic/Auxil.csv ... 199 reading /usr/share/mecab/dic/ipadic/Postp.csv ... 146 reading /usr/share/mecab/dic/ipadic/Noun.adverbal.csv ... 795 reading /usr/share/mecab/dic/ipadic/Noun.adjv.csv ... 3328 reading /usr/share/mecab/dic/ipadic/Noun.org.csv ... 16668 reading /usr/share/mecab/dic/ipadic/Noun.others.csv ... 151 reading /usr/share/mecab/dic/ipadic/Verb.csv ... 130750 reading /usr/share/mecab/dic/ipadic/Noun.csv ... 60477 reading /usr/share/mecab/dic/ipadic/Noun.number.csv ... 42 reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91 reading /usr/share/mecab/dic/ipadic/Noun.demonst.csv ... 120 reading /usr/share/mecab/dic/ipadic/Filler.csv ... 19 reading /usr/share/mecab/dic/ipadic/Noun.verbal.csv ... 12146 reading /usr/share/mecab/dic/ipadic/Prefix.csv ... 221 reading /usr/share/mecab/dic/ipadic/Noun.place.csv ... 72999 reading /usr/share/mecab/dic/ipadic/Interjection.csv ... 252 reading /usr/share/mecab/dic/ipadic/Adj.csv ... 27210 reading /usr/share/mecab/dic/ipadic/Adverb.csv ... 3032 reading /usr/share/mecab/dic/ipadic/Noun.proper.csv ... 27328 reading /usr/share/mecab/dic/ipadic/Symbol.csv ... 208 reading /usr/share/mecab/dic/ipadic/Noun.nai.csv ... 42 reading /usr/share/mecab/dic/ipadic/Conjunction.csv ... 171 reading /usr/share/mecab/dic/ipadic/Suffix.csv ... 1393 emitting double-array: 100% |###########################################| reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316 emitting matrix : 100% |###########################################| done! update-alternatives: using /var/lib/mecab/dic/ipadic-utf8 to provide /var/lib/mecab/dic/debian (mecab-dictionary) in auto mode Setting up mysql-server-8.0 (8.0.25-0ubuntu0.20.04.1) ... update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode Renaming removed key_buffer and myisam-recover options (if present) mysqld will log errors to /var/log/mysql/error.log mysqld is running as pid 6932 Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service. Setting up mysql-server (8.0.25-0ubuntu0.20.04.1) ... Processing triggers for systemd (245.4-4ubuntu3.6) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9.2) ... developer@developer:~$ sudo mysql_secure_installation Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 0 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y Success. All done! developer@developer:~$ sudo systemctl status mysql ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-05-29 07:12:36 EDT; 1min 29s ago Main PID: 7155 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 18996) Memory: 334.4M CGroup: /system.slice/mysql.service └─7155 /usr/sbin/mysqld May 29 07:12:34 developer systemd[1]: Starting MySQL Community Server... May 29 07:12:36 developer systemd[1]: Started MySQL Community Server. developer@developer:~$ sudo systemctl enable mysql Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable mysql developer@developer:~$ developer@developer:~$ developer@developer:~$ developer@developer:~$ developer@developer:~$ developer@developer:~$ developer@developer:~$ sudo mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> mysql> show databases; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> show databases' at line 1 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec) mysql> mysql> mysql> mysql> exit Bye developer@developer:~$ mysql -V mysql Ver 8.0.25-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) developer@developer:~$ developer@developer:~$ developer@developer:~$ developer@developer:~$ mysql ERROR 1045 (28000): Access denied for user 'developer'@'localhost' (using password: NO) developer@developer:~$ sudo mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> mysql> mysql> mysql> mysql> mysql> mysql> mysql> exit Bye developer@developer:~$ developer@developer:~$ developer@developer:~$ developer@developer:~$ developer@developer:~$ developer@developer:~$