mysql#002#apt安装指南

记录在Ubuntu22.04服务器上,使用apt安装mysql-server、mysql-client、mysql-dev开发库等组件的方法。

查看apt源里MySQL的软件包

使用命令查询源:

1
2
3
$ apt-cache search mysql-server
$ apt-cache search mysql-client
$ apt-cache search libmysqlclient-dev

安装mysql-server

使用命令:

1
$ sudo apt install mysql-server-8.0

安装开始:

安装完成:

mysql-server的登录密码

在本机使用命令登录msyql-server提示失败信息:

1
2
kevintian@dev:~$ mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

发现登录不上去,然后使用sudo登录,发现可以正常登录。登录之后再查看下mysql的用户表,发现plugin为auth_socket,非使用密码登录方式。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
kevintian@dev:~$ sudo mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2023, 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> select * from mysql.user where User='root'\G
*************************** 1. row ***************************
                    Host: localhost
                    User: root
             Select_priv: Y
             Insert_priv: Y
             Update_priv: Y
             Delete_priv: Y
             Create_priv: Y
               Drop_priv: Y
             Reload_priv: Y
           Shutdown_priv: Y
            Process_priv: Y
               File_priv: Y
              Grant_priv: Y
         References_priv: Y
              Index_priv: Y
              Alter_priv: Y
            Show_db_priv: Y
              Super_priv: Y
   Create_tmp_table_priv: Y
        Lock_tables_priv: Y
            Execute_priv: Y
         Repl_slave_priv: Y
        Repl_client_priv: Y
        Create_view_priv: Y
          Show_view_priv: Y
     Create_routine_priv: Y
      Alter_routine_priv: Y
        Create_user_priv: Y
              Event_priv: Y
            Trigger_priv: Y
  Create_tablespace_priv: Y
                ssl_type: 
              ssl_cipher: 0x
             x509_issuer: 0x
            x509_subject: 0x
           max_questions: 0
             max_updates: 0
         max_connections: 0
    max_user_connections: 0
                  plugin: auth_socket
   authentication_string: 
        password_expired: N
   password_last_changed: 2023-11-20 13:35:33
       password_lifetime: NULL
          account_locked: N
        Create_role_priv: Y
          Drop_role_priv: Y
  Password_reuse_history: NULL
     Password_reuse_time: NULL
Password_require_current: NULL
         User_attributes: NULL
1 row in set (0.00 sec)

我们将root@localhost的登录方式改为密码登录,登录mysql服务器之后,使用如下命令:

1
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '123456';

退出之后,我们再次使用非sudo命令登录mysql-server,提示我们输入密码,输入123456,现在可以正常进入msyql-server。


我们再将root用户的信息查询出来,和未修改密码之前的信息对比下,发现就是修改了“plugin”和“authentication_string”两个字段。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
mysql> select * from mysql.user where User='root'\G
*************************** 1. row ***************************
                    Host: localhost
                    User: root
             Select_priv: Y
             Insert_priv: Y
             Update_priv: Y
             Delete_priv: Y
             Create_priv: Y
               Drop_priv: Y
             Reload_priv: Y
           Shutdown_priv: Y
            Process_priv: Y
               File_priv: Y
              Grant_priv: Y
         References_priv: Y
              Index_priv: Y
              Alter_priv: Y
            Show_db_priv: Y
              Super_priv: Y
   Create_tmp_table_priv: Y
        Lock_tables_priv: Y
            Execute_priv: Y
         Repl_slave_priv: Y
        Repl_client_priv: Y
        Create_view_priv: Y
          Show_view_priv: Y
     Create_routine_priv: Y
      Alter_routine_priv: Y
        Create_user_priv: Y
              Event_priv: Y
            Trigger_priv: Y
  Create_tablespace_priv: Y
                ssl_type: 
              ssl_cipher: 0x
             x509_issuer: 0x
            x509_subject: 0x
           max_questions: 0
             max_updates: 0
         max_connections: 0
    max_user_connections: 0
                  plugin: caching_sha2_password
   authentication_string: $A$005$&d>?`W<&#ea<yspWO.m/weh6D3aoPubMFNwON3H.6Ac6707ex60f99KeA
        password_expired: N
   password_last_changed: 2023-11-20 14:47:43
       password_lifetime: NULL
          account_locked: N
        Create_role_priv: Y
          Drop_role_priv: Y
  Password_reuse_history: NULL
     Password_reuse_time: NULL
Password_require_current: NULL
         User_attributes: NULL
1 row in set (0.00 sec)

mysql-server的启停

使用如下命令查看当前MySQL的状态:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ sudo systemctl status mysql
[sudo] password for kevintian: 
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-11-20 14:44:42 CST; 19min ago
    Process: 4229 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 4237 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 23860)
     Memory: 366.1M
        CPU: 11.603s
     CGroup: /system.slice/mysql.service
             └─4237 /usr/sbin/mysqld

Nov 20 14:44:42 dev systemd[1]: Starting MySQL Community Server...
Nov 20 14:44:42 dev systemd[1]: Started MySQL Community Server.

使用如下命令启动MySQL:

1
$ sudo systemctl start mysql

使用如下命令停止MySQL:

1
$ sudo systemctl stop mysql

查看mysql-server的配置、日志、数据目录

使用如下命令,查看默认安装的文件和目录。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
kevintian@dev:~$ sudo dpkg -L mysql-server-8.0
/.
/etc
/etc/apparmor.d
/etc/apparmor.d/usr.sbin.mysqld
/etc/init
/etc/init/mysql.conf
/etc/init.d
/etc/init.d/mysql
/etc/logcheck
/etc/logcheck/ignore.d.paranoid
/etc/logcheck/ignore.d.paranoid/mysql-server-8_0
/etc/logcheck/ignore.d.server
/etc/logcheck/ignore.d.server/mysql-server-8_0
/etc/logcheck/ignore.d.workstation
/etc/logcheck/ignore.d.workstation/mysql-server-8_0
/etc/logrotate.d
/etc/logrotate.d/mysql-server
/etc/mysql
/etc/mysql/debian-start
/etc/mysql/mysql.cnf
/etc/mysql/mysql.conf.d
/etc/mysql/mysql.conf.d/mysql.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/mysql.service
/usr
/usr/share
/usr/share/apport
/usr/share/apport/package-hooks
/usr/share/apport/package-hooks/source_mysql-8.0.py
/usr/share/doc
/usr/share/doc/mysql-server-8.0
/usr/share/doc/mysql-server-8.0/README.Debian.gz
/usr/share/doc/mysql-server-8.0/copyright
/usr/share/doc/mysql-server-8.0/examples
/usr/share/doc/mysql-server-8.0/examples/daemon_example.ini
/usr/share/doc/mysql-server-8.0/mysqld.sym.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/mysql-server-8.0
/usr/share/mysql
/usr/share/mysql/debian_create_root_user.sql
/usr/share/mysql/docs
/usr/share/mysql/docs/INFO_BIN
/usr/share/mysql/docs/INFO_SRC
/usr/share/mysql/echo_stderr
/usr/share/mysql/install_rewriter.sql
/usr/share/mysql/mysql-systemd-start
/usr/share/mysql/mysqld_multi.server
/usr/share/mysql/uninstall_rewriter.sql
/var
/var/lib
/var/lib/mysql-upgrade

发现有关配置文件:

/etc/mysql

/etc/mysql/mysql.cnf

/etc/mysql/mysql.conf.d

/etc/mysql/mysql.conf.d/mysql.cnf

/etc/mysql/mysql.conf.d/mysqld.cnf

查看配置文件可以找到日志文件和数据文件的目录(一般日志路径:/var/log/mysql/,数据路径:/var/lib/mysql/)。