发表于: 2018-04-06 09:38:15

1 794




day9



今天完成的事情


1.在Ubuntu上安装mysql,并实现远程链接


1.1 更新系统

apt-get update  【注意:要在root用户下】


1.2 安装mysql-server

apt-get install mysql-server

apt-get isntall mysql-client

   apt-get install libmysqlclient-dev

   以上两条命令用于安装mysql客户端和其他相关,现在用不到先不装 


1.3 使用如下命令查询是否安装成功:

sudo netstat -tap | grep mysql


重启mysql

/etc/init.d/mysql restart


登陆:

mysql -uroot -p<你的密码>


1.4 授权远程

默认是不能用客户端远程连接的,只能本地连接,所以去将设置改一下

首先登录mysql后,输入 use mysql ,然后输入以下

update user set host='%' where user='root' and host='localhost';

因为所有的账户及权限都在mysql的user表里,如下图

可以看到Host列下localhost代表这个用户只支持本地访问,即只接受本地的ip, 而%代表接受所有ip的访问,所以update user set host='%' where user='root' and host='localhost';这一命令,相当于一句SQL语句将root的Host字段设为%,权限为%则表示任意ip都能连接。


然后   flush privileges;        #刷新权限表,使刚才的配置生效


也可以授权一个叫Ubuntu的账户,并授予它远程连接的权力,命令如下:

GRANT ALL PRIVILEGES ON *.* TO 'Ubuntu'@'%' IDENTIFIED BY '123456x' WITH GRANT OPTION;

运行完后紧接着输入,以更新数据库:

FLUSH PRIVILEGES;

上面的'Ubuntu'可以替换成你指定的名字,'123456' 可以替换为你的密码。


由于MySQL默认支持本地使用,没有开放远程连接,于是需要到配置文件中去修改,

 执行 vim /etc/mysql/mysql.conf.d/mysqld.cnf把里面的"bind-address = 127.0.0.1"注释掉,或者改为"bind-address = * "

关于这里的bind-address是什么,见下图,后面参数设置为* ,代表接收所有的IPv4 或 IPv6 连接请求。

总的来说两步,第一步将host里的权限有localhost(只能本地访问)改为%(都可以访问),第二步将/etc/mysql/mysql.conf.d/mysqld.cnf 下的"bind-address = 127.0.0.1"注释掉。


最后在阿里云安全组开启3306端口入口。


1.5 测试是否能连接

1.5.1 打开Navicat测试下能不能连接成功,然后是成功的。

然后我把账户换成刚才授权的Ubuntu,测试也是成功的。


1.5.2 测试用本地命令行连接


打开命令行输入 >mysql -u <用户名> -h <服务器公网ip> -p ,再输入密码,连接成功。


1.6 如果遇到报错

ERROR 1045 (28000): Access denied for user 'Ubuntu'@'localhost' (using password: YES)

以上的报错一般是密码输出了或者其他,可以采取以下方案


如果你密码忘了或者其他原因无法登录mysql了,输入指令cat /etc/mysql/debian.cnf 看到如下

那个debian-sys-maint账户是预留的用来解决这种情况的,直接mysql -u debian-sys-maint -p,然后输入红框里的密码,就可以登录了。登录后就可以为所欲为了,你是要修改之前忘记的密码,还是要新建一个授权远程访问的账户,都可以。



可能用到的指令

#启动

sudo service mysql start

#停止

sudo service mysql stop

#服务状态

sudo service mysql status


阿里云服务器Ubuntu 16.04 3安装mysql

参考链接:https://www.cnblogs.com/ywf520/p/7660668.html



2.安装jdk1.8到服务器并配置环境变量


2.1 

先建好目录,我的是/root/opt/java,用mkdir指令即可,

然后执行 wget <jdk下载链接>,我的是

wget http://download.oracle.com/otn-pub/java/jdk/8u161b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-i586.tar.gz

然后嗖的一下就下好了,这可以180m多的包啊

用可视化工具WinSCP看了下,果然下好了,然后执行解压命令tar -zxvf jdk-8u161-linux-i586.tar.gz

报错,说不是gzip格式的,然后去网上查原因,问题出在wget指令上,正常我们下载jdk都要同意一个协定的,但这个指令没有这一过程,而且还看网上说这下下来的其实是个html文件,我用WinSCP看了下,果然是个6kb的html。。。。。(我说怎么一秒就下好了,还惊叹了下服务器下东西的网速)

那怎么办,老老实实的下到windows本地, 然后上传到服务器上,再执行解压命令吧。



WinSCP还是很好用的,直接拖过来就好,左面本地右面服务器,然后上传速度也挺快。


下好后执行解压命令tar -zxvf jdk-8u161-linux-i586.tar.gz,然后页面刷刷刷都是解压的路径东东,感觉像黑客一样。同时多了名为jdk1.8.0_161的文件夹。



小课堂:

今天在审查日报时看到如下代码

try (Connection c = getConnection()PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1start);
      ps.setInt(2count);
      ResultSet rs = ps.executeQuery();
      while (rs.next()) {
          Student stu = new Student();
          int id = rs.getInt(1);
          int student_id = rs.getInt("student_id");
          long qq = rs.getLong("qq");
          String name = rs.getString("name");
          stu.id = id;
          stu.name = name;
          stu.student_id =student_id;
          stu.qq=qq;
          students.add(stu);
      }
catch (SQLException e) {
e.printStackTrace();
       }

疑问一:Connection和PreparedStatement为何不在finally中关闭

疑问二:try()中的代码什么意思

怀着这样的疑问,查了一些资料,知道了这是jdk7的新特性,名称 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。新的语句支持包括流以及任何可关闭的资源。数据流会在 try 执行完毕后自动被关闭,try()的括号中可以写多行声明,每个声明的变量类型都必须是Closeable的子类,用分号隔开。总之它们相当于之前的finally。


明天计划的事情


希望能配好jdk的环境变量,能的话就能开始下一步了。


遇到的问题:


按照网上的教程来的,但是jdk环境变量没有配好,按java -version总是报错


收获:


早岁那知世事艰,中原北望气如山

楼船夜雪瓜洲渡,铁马秋风大散关

 



返回列表 返回列表
评论

    分享到