Ubuntu 16.04 TLS 安装 MySQL 教程以及中途可能会遇到的坑
  1. 命令安装,会提示输入 mysqlroot 账户的密码

    1
    2
    3
    4
    5
    6
    7
    ➜ ~ sudo apt-get install mysql-server
    ➜ ~ sudo apt-get install mysql-client
    ➜ ~ sudo apt-get install libmysqlclient-dev
    # 中途遇到问题,通常可以通过下面的命令解决,如果还是有其他问题,请跳到最后看一些常见的问题解决
    ➜ ~ sudo apt-get update
    ➜ ~ sudo apt-get install -f
  2. 如果上面的命令都正确执行,则执行下面的命令确认是否成功(结果如果和下面的类似,就代表成功了)

    1
    2
    ➜ ~ sudo netstat -tap | grep mysql
    tcp6 0 0 [::]:mysql [::]:* LISTEN 7510/mysqld
  3. 设置远程访问(非必要

    第一步,修改IP限制:

    1
    2
    3
    4
    5
    # 执行下面的一条命令找到 bind-address = 127.0.0.1 并注释,修改为 # bind-address = 127.0.0.1
    ➜ ~ vim /etc/mysql/my.cnf 或 sudo gedit /etc/mysql/my.cnf
    # 修改完成后重启 mysql
    ➜ ~ sudo /etc/init.d/mysql restart

    第二步,用户授权:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ➜ ~ mysql -uroot -p123456
    Welcome to the MySQL monitor...
    # *.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。root:授予root账号
    # %:表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库
    # 123456:表示分配账号对应的密码,这里密码自己替换成你的mysql root帐号密码
    mysql> grant all on *.* to root@'%' identified by '123456' with grand option;
    # 刷新权限信息,也即是让我们所作的设置马上生效
    mysql> flush privileges;
    # 退出
    mysql> exit;
  4. 常见问题集锦:

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      # 安装出现类似下面的情况
      ...
      error processing mysql-server-5.7 (--configrue): 子进程 已安装 post-installation 脚本
      然而 mysql-server-5.7 尚未配置 ...
      ...
      E: Sub-process /usr/bin/dpkg returned an error code (1)
      # 尝试执行下面的命令
      ➜ ~ sudo rm /var/lib/mysql/ -R
      ➜ ~ sudo rm /etc/mysql/ -R
      ➜ ~ sudo apt-get autoremove mysql* --purge
      ➜ ~ sudo apt-get remove apparmor
      ➜ ~ sudo apt-get autoclean
      # 中途如果没有其他错误,则可以回到最上面的安装教程
    • 1
      2
      3
      4
      5
      6
      7
      8
      # 卸载出现类似下面的情况
      ...
      error processing mysql-server-5.7 (--purge): 子进程 已安装 pre-removal 脚本
      然而 mysql-server-5.7 尚未配置 ...
      ...
      E: Sub-process /usr/bin/dpkg returned an error code (1)
      # 请确认错误信息中是否包含 `missing LSB tags and overrides` 这类警告或错误,如果有,通常是自定义的开机启动脚本书写不规范导致的,需要找到对应的启动脚本,进行修改,下面以 `redis` 开启启动为例,没有填写 `BEGIN INIT INFO` - `END INIT INFO` 这一段,也是会出现无法彻底卸载或安装MySQL的原因之一...
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      #!/bin/sh
      # chkconfig: 2345 90 10
      # description: Redis is a persistent key-value database
      #
      # Simple Redis init.d script conceived to work on Linux systems
      # as it does use of the /proc filesystem.
      ### BEGIN INIT INFO
      # Provides: redis6379
      # Required-Start: $local_fs $network
      # Required-Stop: $local_fs
      # Default-Start: 2 3 4 5
      # Default-Stop: 0 1 6
      # Short-Description: redis6379
      # Description: penavico redis 6379
      ### END INIT INFO
      REDISPORT=6379
      EXEC=/usr/local/bin/redis-server
      CLIEXEC=/usr/local/bin/redis-cli
      ...